{
  "version": "0.1.0",
  "scanTitle": "SCAN: https://ufo50.miraheze.org/wiki/",
  "issueNumber": 44,
  "generatedAt": "2026-04-20T18:51:36.832Z",
  "requestedUrls": [
    "https://ufo50.miraheze.org/",
    "https://ufo50.miraheze.org/w/load.php?lang=en&amp;modules=ext.MobileDetect.nomobile%7Cext.visualEditor.desktopArticleTarget.noscript%7Cskins.citizen.codex.styles%7Cskins.citizen.icons%2Cstyles&amp;only=styles&amp;skin=citizen",
    "https://ufo50.miraheze.org/w/load.php?lang=en&amp;modules=site.styles&amp;only=styles&amp;skin=citizen",
    "https://ufo50.miraheze.org/w/api.php?action=appmanifest",
    "https://ufo50.miraheze.org/wiki/Main_Page?action=edit",
    "https://ufo50.miraheze.org/w/rest.php/v1/search",
    "https://ufo50.miraheze.org/w/api.php?action=rsd",
    "https://ufo50.miraheze.org/wiki/Main_Page",
    "https://ufo50.miraheze.org/wiki/Special:RecentChanges?feed=atom",
    "https://ufo50.miraheze.org/auth.miraheze.org",
    "https://ufo50.miraheze.org/wiki/Special:Random",
    "https://ufo50.miraheze.org/wiki/Special:RecentChanges",
    "https://ufo50.miraheze.org/wiki/Special:SpecialPages",
    "https://ufo50.miraheze.org/wiki/Special:UploadWizard",
    "https://ufo50.miraheze.org/wiki/Special:MyTalk",
    "https://ufo50.miraheze.org/wiki/Special:MyContributions",
    "https://ufo50.miraheze.org/wiki/Special:CreateAccount?returnto=Main+Page",
    "https://ufo50.miraheze.org/wiki/Special:UserLogin?returnto=Main+Page",
    "https://ufo50.miraheze.org/wiki/Main_Page?veaction=edit",
    "https://ufo50.miraheze.org/wiki/Main_Page?action=history",
    "https://ufo50.miraheze.org/wiki/Talk:Main_Page?action=edit&amp;redlink=1",
    "https://ufo50.miraheze.org/wiki/Main_Page?action=purge",
    "https://ufo50.miraheze.org/wiki/Special:WhatLinksHere/Main_Page",
    "https://ufo50.miraheze.org/wiki/Special:RecentChangesLinked/Main_Page",
    "https://ufo50.miraheze.org/wiki/Main_Page?oldid=6306",
    "https://ufo50.miraheze.org/wiki/Main_Page?action=info",
    "https://ufo50.miraheze.org/wiki/Special:CiteThisPage?page=Main_Page&amp;id=6306&amp;wpFormIdentifier=titleform",
    "https://ufo50.miraheze.org/wiki/Special:UrlShortener?url=https%3A%2F%2Fufo50.miraheze.org%2Fwiki%2FMain_Page",
    "https://ufo50.miraheze.org/wiki/Main_Page?veaction=edit&amp;section=1",
    "https://ufo50.miraheze.org/wiki/Main_Page?action=edit&amp;section=1",
    "https://ufo50.miraheze.org/wiki/UFO_Soft",
    "https://ufo50.miraheze.org/wiki/UFO_50_Recovery_Team",
    "https://ufo50.miraheze.org/wiki/Main_Page?veaction=edit&amp;section=2",
    "https://ufo50.miraheze.org/wiki/Main_Page?action=edit&amp;section=2",
    "https://ufo50.miraheze.org/wiki/Barbuta",
    "https://ufo50.miraheze.org/wiki/Bug_Hunter",
    "https://ufo50.miraheze.org/wiki/Ninpek",
    "https://ufo50.miraheze.org/wiki/Paint_Chase",
    "https://ufo50.miraheze.org/wiki/Magic_Garden",
    "https://ufo50.miraheze.org/wiki/Mortol",
    "https://ufo50.miraheze.org/wiki/Velgress",
    "https://ufo50.miraheze.org/wiki/Planet_Zoldath",
    "https://ufo50.miraheze.org/wiki/Attactics",
    "https://ufo50.miraheze.org/wiki/Devilition",
    "https://ufo50.miraheze.org/wiki/Kick_Club",
    "https://ufo50.miraheze.org/wiki/Avianos",
    "https://ufo50.miraheze.org/wiki/Mooncat",
    "https://ufo50.miraheze.org/wiki/Bushido_Ball",
    "https://ufo50.miraheze.org/wiki/Block_Koala",
    "https://ufo50.miraheze.org/wiki/Camouflage",
    "https://ufo50.miraheze.org/wiki/Campanella",
    "https://ufo50.miraheze.org/wiki/Golfaria",
    "https://ufo50.miraheze.org/wiki/The_Big_Bell_Race",
    "https://ufo50.miraheze.org/wiki/Warptank",
    "https://ufo50.miraheze.org/wiki/Waldorf%27s_Journey",
    "https://ufo50.miraheze.org/wiki/Porgy",
    "https://ufo50.miraheze.org/wiki/Onion_Delivery",
    "https://ufo50.miraheze.org/wiki/Caramel_Caramel",
    "https://ufo50.miraheze.org/wiki/Party_House",
    "https://ufo50.miraheze.org/wiki/Hot_Foot",
    "https://ufo50.miraheze.org/wiki/Divers",
    "https://ufo50.miraheze.org/wiki/Rail_Heist",
    "https://ufo50.miraheze.org/wiki/Vainger",
    "https://ufo50.miraheze.org/wiki/Rock_On!_Island",
    "https://ufo50.miraheze.org/wiki/Pingolf",
    "https://ufo50.miraheze.org/wiki/Mortol_II",
    "https://ufo50.miraheze.org/wiki/Fist_Hell",
    "https://ufo50.miraheze.org/wiki/Overbold",
    "https://ufo50.miraheze.org/wiki/Campanella_2",
    "https://ufo50.miraheze.org/wiki/Hyper_Contender",
    "https://ufo50.miraheze.org/wiki/Valbrace",
    "https://ufo50.miraheze.org/wiki/Rakshasa",
    "https://ufo50.miraheze.org/wiki/Star_Waspir",
    "https://ufo50.miraheze.org/wiki/Grimstone",
    "https://ufo50.miraheze.org/wiki/Lords_of_Diskonia",
    "https://ufo50.miraheze.org/wiki/Night_Manor",
    "https://ufo50.miraheze.org/wiki/Elfazar%27s_Hat",
    "https://ufo50.miraheze.org/wiki/Pilot_Quest",
    "https://ufo50.miraheze.org/wiki/Mini_%26_Max",
    "https://ufo50.miraheze.org/wiki/Combatants",
    "https://ufo50.miraheze.org/wiki/Quibble_Race",
    "https://ufo50.miraheze.org/wiki/Seaside_Drive",
    "https://ufo50.miraheze.org/wiki/Campanella_3",
    "https://ufo50.miraheze.org/wiki/Cyber_Owls",
    "https://ufo50.miraheze.org/wiki/List_of_Games",
    "https://ufo50.miraheze.org/wiki/Singleplayer",
    "https://ufo50.miraheze.org/wiki/Multiplayer",
    "https://ufo50.miraheze.org/wiki/Epic_Play",
    "https://ufo50.miraheze.org/wiki/Quick_Play",
    "https://ufo50.miraheze.org/wiki/Thinky_Play",
    "https://ufo50.miraheze.org/wiki/Reflex_Play",
    "https://ufo50.miraheze.org/wiki/Adventure",
    "https://ufo50.miraheze.org/wiki/RPG",
    "https://ufo50.miraheze.org/wiki/Puzzle",
    "https://ufo50.miraheze.org/wiki/Strategy",
    "https://ufo50.miraheze.org/wiki/Arcade",
    "https://ufo50.miraheze.org/wiki/Sport",
    "https://ufo50.miraheze.org/wiki/Shooter",
    "https://ufo50.miraheze.org/wiki/Platform",
    "https://ufo50.miraheze.org/wiki/Simulation"
  ],
  "summary": {
    "okCount": 100,
    "errorCount": 0,
    "averagePerformanceScore": 0,
    "averageBestPracticesScore": 0.32549999999999996,
    "totalTransferBytes": 19430871,
    "totalCo2Grams": 7.443605265899403,
    "averageTransferBytes": 194308.71,
    "averageCo2GramsPerPage": 0.07443605265899403,
    "averageRedundancyScore": 0,
    "highUrgencyRedundancyCount": 0,
    "averageModularizationScore": 8.7,
    "highUrgencyModularizationCount": 0,
    "averageDeadCodeScore": 0,
    "highUrgencyDeadCodeCount": 0,
    "averageNonCriticalResourcesScore": 0,
    "highUrgencyNonCriticalResourcesCount": 0,
    "averageFormValidationScore": 19.72380952380952,
    "highUrgencyFormValidationCount": 25,
    "averageMetadataScore": 26.85,
    "highUrgencyMetadataCount": 4,
    "averageLayoutAdaptationScore": 13.28,
    "highUrgencyLayoutAdaptationCount": 0,
    "averageSecurityLightScore": 6.22,
    "highUrgencySecurityLightCount": 0,
    "averageDependencyMaintenanceScore": 0.7,
    "highUrgencyDependencyMaintenanceCount": 0,
    "averageExpectedFilesScore": 57.45,
    "highUrgencyExpectedFilesCount": 59,
    "averageCompressionScore": 0,
    "highUrgencyCompressionCount": 0,
    "averageOptimizationScore": 0,
    "highUrgencyOptimizationCount": 0,
    "averageOfflineSupportScore": 100,
    "highUrgencyOfflineSupportCount": 100,
    "averageLanguageVersionScore": 0,
    "highUrgencyLanguageVersionCount": 0,
    "averageMediaHintsScore": 3.74,
    "highUrgencyMediaHintsCount": 0,
    "distinctSiteCount": 1,
    "singleSiteScan": true,
    "greenWeb": {
      "pageHostsChecked": 100,
      "pageHostsGreen": 100,
      "pageHostsNotGreen": 0,
      "pageHostsUnknown": 0,
      "externalOriginsChecked": 1,
      "externalOriginsGreen": 1,
      "externalOriginsNotGreen": 0,
      "externalOriginsUnknown": 0
    }
  },
  "budgetGuidance": {
    "wsgReference": {
      "id": "3.1",
      "title": "Set goals based on performance and energy impact",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact"
    },
    "benchmarkReference": {
      "name": "Sustainable Web Design Digital Carbon Ratings",
      "url": "https://sustainablewebdesign.org/digital-carbon-ratings/"
    },
    "current": {
      "averageTransferBytes": 194308.71,
      "averageCo2GramsPerPage": 0.07443605265899403,
      "transferRating": "A+",
      "co2Rating": "A"
    },
    "recommendedBudget": {
      "targetRating": "B",
      "maxTransferBytesPerPage": 999270.4,
      "maxCo2GramsPerPage": 0.145
    },
    "reductionsNeeded": {
      "transferBytesPerPage": {
        "absolute": 0,
        "percent": 0,
        "needsReduction": false
      },
      "co2GramsPerPage": {
        "absolute": 0,
        "percent": 0,
        "needsReduction": false
      }
    },
    "stretchBudget": {
      "targetRating": "A",
      "maxTransferBytesPerPage": 543897.6,
      "maxCo2GramsPerPage": 0.079
    }
  },
  "thirdPartyJsSummary": {
    "wsgReference": {
      "title": "Give third parties the same priority as first parties during assessment",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
    },
    "averageScore": 1.75,
    "highUrgencyPages": 0,
    "assessedPages": 100,
    "providers": [
      {
        "hostname": "challenges.cloudflare.com",
        "pageCount": 35,
        "transferBytes": 621054,
        "requestCount": 35,
        "status": "green",
        "hostedBy": "Cloudflare"
      }
    ]
  },
  "externalProviderRiskSummary": {
    "recurringNonGreenProviders": [],
    "nonGreenProviders": [],
    "recurringUnknownProviders": []
  },
  "formValidationSummary": {
    "wsgReference": {
      "title": "Validate form errors and account for tooling requirements",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#validate-form-errors-and-account-for-tooling-requirements"
    },
    "uniqueElementSignaturesAssessed": 41,
    "totalOccurrences": 185,
    "reusedFromCacheCount": 44,
    "recurringElements": [
      {
        "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
        "role": "form",
        "controlType": "search",
        "fieldName": "search",
        "score": 60,
        "urgency": "high",
        "pageCount": 33,
        "occurrenceCount": 33
      },
      {
        "signature": "form|post|/wiki/main_page?action=submit|input|text|wpantispam|no-autocomplete|optional|no-pattern|no-minlength",
        "role": "form",
        "controlType": "text",
        "fieldName": "wpantispam",
        "score": 60,
        "urgency": "high",
        "pageCount": 3,
        "occurrenceCount": 3
      },
      {
        "signature": "form|get|/w/index.php|input|text|tagfilter|no-autocomplete|optional|no-pattern|no-minlength",
        "role": "form",
        "controlType": "text",
        "fieldName": "tagfilter",
        "score": 60,
        "urgency": "high",
        "pageCount": 3,
        "occurrenceCount": 3
      },
      {
        "signature": "form|post|/wiki/main_page?action=submit|textarea|textarea|wptextbox1|no-autocomplete|optional|no-pattern|no-minlength",
        "role": "form",
        "controlType": "textarea",
        "fieldName": "wptextbox1",
        "score": 50,
        "urgency": "medium",
        "pageCount": 3,
        "occurrenceCount": 3
      },
      {
        "signature": "form|post|/wiki/main_page?action=submit|input|text|wpsummary|no-autocomplete|optional|no-pattern|no-minlength",
        "role": "form",
        "controlType": "text",
        "fieldName": "wpsummary",
        "score": 30,
        "urgency": "medium",
        "pageCount": 3,
        "occurrenceCount": 3
      },
      {
        "signature": "form|get|/w/index.php|input|text|anonymous|no-autocomplete|optional|no-pattern|no-minlength",
        "role": "form",
        "controlType": "text",
        "fieldName": null,
        "score": 100,
        "urgency": "high",
        "pageCount": 2,
        "occurrenceCount": 2
      },
      {
        "signature": "form|get|/ufo50wiki/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
        "role": "form",
        "controlType": "search",
        "fieldName": "search",
        "score": 60,
        "urgency": "high",
        "pageCount": 2,
        "occurrenceCount": 2
      },
      {
        "signature": "form|get|/w/index.php|select|select|namespace|no-autocomplete|optional|no-pattern|no-minlength",
        "role": "form",
        "controlType": "select",
        "fieldName": "namespace",
        "score": 50,
        "urgency": "medium",
        "pageCount": 2,
        "occurrenceCount": 2
      },
      {
        "signature": "form|get|/w/index.php|input|checkbox|taginvert|no-autocomplete|optional|no-pattern|no-minlength",
        "role": "form",
        "controlType": "checkbox",
        "fieldName": "taginvert",
        "score": 50,
        "urgency": "medium",
        "pageCount": 2,
        "occurrenceCount": 2
      }
    ],
    "recurringSearchElements": []
  },
  "metadataSummary": {
    "wsgReference": {
      "title": "Structure metadata for machine readability",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#structure-metadata-for-machine-readability"
    },
    "assessedPages": 100,
    "averageScore": 26.85,
    "highUrgencyPages": 4,
    "missing": {
      "missingLang": 6,
      "missingDescription": 30,
      "missingCanonical": 65,
      "missingOpenGraphCore": 89,
      "missingTwitterCard": 65,
      "invalidStructuredData": 2
    }
  },
  "layoutSupportSummary": {
    "wsgReference": {
      "title": "Ensure layouts work for different devices and requirements",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-layouts-work-for-different-devices-and-requirements"
    },
    "assessedPages": 100,
    "averageScore": 13.28,
    "highUrgencyPages": 0,
    "mobileOverflowPages": 0,
    "tabletOverflowPages": 0,
    "totalMobileSmallTapTargets": 2960,
    "totalTabletSmallTapTargets": 2976,
    "totalFixedWidthOffenders": 140,
    "pagesWithGridOverflow": 1,
    "totalGridOverflowContainers": 1,
    "totalGridContainersDetected": 837
  },
  "securityLightSummary": {
    "wsgReference": {
      "title": "Ensure that your code is secure",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-your-code-is-secure"
    },
    "assessedPages": 100,
    "averageScore": 6.22,
    "highUrgencyPages": 0,
    "pagesWithoutCsp": 7,
    "pagesWithoutHsts": 4,
    "pagesWithVulnerableLibraries": 0,
    "totalExternalScriptsWithoutIntegrity": 35
  },
  "dependencyMaintenanceSummary": {
    "wsgReference": {
      "title": "Use dependencies appropriately and ensure maintenance",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
    },
    "assessedPages": 100,
    "averageScore": 0.7,
    "highUrgencyPages": 0,
    "pagesWithVulnerableDependencies": 0,
    "totalVulnerableDependencies": 0,
    "topRecurringLibraries": []
  },
  "expectedFilesSummary": {
    "wsgReference": {
      "title": "Include expected and beneficial files",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#include-expected-and-beneficial-files"
    },
    "assessedPages": 100,
    "averageScore": 57.45,
    "highUrgencyPages": 59,
    "missing": {
      "robotsTxt": 59,
      "sitemapXml": 59,
      "securityTxt": 100,
      "webManifest": 100,
      "favicon": 59
    }
  },
  "compressionSummary": {
    "wsgReference": {
      "title": "Reduce data transfer with compression",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
    },
    "assessedPages": 100,
    "averageScore": 0,
    "highUrgencyPages": 0,
    "pagesMissingTextCompression": 0,
    "totalEstimatedSavingsBytes": 0,
    "recurringOpportunities": []
  },
  "optimizationSummary": {
    "wsgReference": {
      "title": "Use the most efficient solution for your service",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
    },
    "assessedPages": 100,
    "averageScore": 0,
    "highUrgencyPages": 0,
    "totalEstimatedSavingsBytes": 0,
    "totalEstimatedBlockingMs": 0,
    "recurringOpportunities": []
  },
  "offlineSupportSummary": {
    "wsgReference": {
      "title": "Optimize caching and support offline access",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
    },
    "assessedPages": 100,
    "averageScore": 100,
    "highUrgencyPages": 100,
    "pagesWithoutServiceWorker": 100,
    "pagesWithoutOfflineSupport": 100,
    "pagesWithWeakCacheTtl": 100,
    "recurringOpportunities": [
      {
        "id": "service-worker",
        "title": "Add service worker support",
        "urgency": "high",
        "pageCount": 100
      },
      {
        "id": "works-offline",
        "title": "Ensure critical routes work offline",
        "urgency": "high",
        "pageCount": 100
      },
      {
        "id": "installable-manifest",
        "title": "Improve web app manifest support",
        "urgency": "medium",
        "pageCount": 100
      },
      {
        "id": "uses-long-cache-ttl",
        "title": "Strengthen static asset cache TTL",
        "urgency": "high",
        "pageCount": 100
      },
      {
        "id": "offline-start-url",
        "title": "Support offline start URL behavior",
        "urgency": "medium",
        "pageCount": 100
      }
    ]
  },
  "languageVersionSummary": {
    "wsgReference": {
      "title": "Use the latest stable language version",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
    },
    "assessedPages": 100,
    "averageScore": 0,
    "highUrgencyPages": 0,
    "pagesWithOutdatedRuntimeSignals": 0,
    "pagesWithVersionDisclosure": 0,
    "topOutdatedSignals": []
  },
  "mediaHintsSummary": {
    "wsgReference": {
      "title": "Optimize media to reduce resource use",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use"
    },
    "assessedPages": 100,
    "averageScore": 3.74,
    "highUrgencyPages": 0,
    "pagesWithAutoplay": 0,
    "pagesWithUnmutedAutoplay": 0,
    "pagesWithoutDarkMode": 2,
    "pagesWithLazyLoadingGap": 15
  },
  "gridAwareSummary": {
    "assessedPages": 100,
    "pagesWithDetection": 0,
    "detectedUrls": []
  },
  "wsgHighlightsSummary": {
    "assessedPages": 100,
    "averageScore": 85.3,
    "highlights": [
      {
        "guideline": "2.4",
        "title": "Review User Journey Efficiency",
        "urgency": "investigate",
        "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
        "wsid": "2.minimize non-essential content",
        "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
        "assessor": "human",
        "pageCount": 98,
        "pages": {},
        "criteria": null
      },
      {
        "guideline": "2.6",
        "title": "Check for Engagement Traps",
        "urgency": "investigate",
        "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
        "wsid": "2.design to assist not distract",
        "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
        "assessor": "human",
        "pageCount": 98,
        "pages": {},
        "criteria": null
      },
      {
        "guideline": "2.7",
        "title": "Audit for Deceptive Design Patterns",
        "urgency": "investigate",
        "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
        "wsid": "2.avoid manipulative deceptive",
        "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
        "assessor": "human",
        "pageCount": 98,
        "pages": {},
        "criteria": null
      },
      {
        "guideline": "2.14",
        "title": "Verify Accessible Alternatives for All Media",
        "urgency": "investigate",
        "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
        "wsid": "2.offer suitable alternatives",
        "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
        "assessor": "human",
        "pageCount": 98,
        "pages": {},
        "criteria": null
      },
      {
        "guideline": "2.18",
        "title": "Confirm User Research Was Conducted",
        "urgency": "investigate",
        "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
        "wsid": "2.involve users early",
        "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
        "assessor": "human",
        "pageCount": 98,
        "pages": {},
        "criteria": null
      },
      {
        "guideline": "2.10",
        "title": "Review Content Conciseness",
        "urgency": "investigate",
        "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
        "wsid": "2.provide clear inclusive content",
        "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
        "assessor": "ai",
        "pageCount": 98,
        "pages": {},
        "criteria": null
      },
      {
        "guideline": "4.4",
        "title": "Verify Error Pages and Redirects Are Configured",
        "urgency": "investigate",
        "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
        "wsid": "4.error pages redirection",
        "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
        "assessor": "human",
        "pageCount": 98,
        "pages": {},
        "criteria": null
      },
      {
        "guideline": "4.10",
        "title": "Review CDN Usage and Geographic Distribution",
        "urgency": "investigate",
        "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
        "wsid": "4.content delivery networks",
        "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
        "assessor": "human",
        "pageCount": 98,
        "pages": {},
        "criteria": null
      },
      {
        "guideline": "5.2",
        "title": "Confirm a Sustainability Advocate Is Assigned",
        "urgency": "investigate",
        "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
        "wsid": "5.assign sustainability advocate",
        "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
        "assessor": "human",
        "pageCount": 98,
        "pages": {},
        "criteria": null
      },
      {
        "guideline": "5.8",
        "title": "Check for a Public Sustainability Statement",
        "urgency": "investigate",
        "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
        "wsid": "5.support mandatory disclosures",
        "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
        "assessor": "human",
        "pageCount": 98,
        "pages": {},
        "criteria": null
      },
      {
        "guideline": "2.5",
        "title": "Missing explicit navigation structure",
        "urgency": "medium",
        "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
        "wsid": "2.navigation wayfinding",
        "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
        "assessor": "script",
        "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>",
        "pageCount": 64,
        "pages": {},
        "criteria": null
      },
      {
        "guideline": "11.3",
        "title": "Incomplete media lazy loading",
        "urgency": "medium",
        "detail": "Only 5/57 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
        "wsid": "11.lazy loading",
        "assessor": "script",
        "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>",
        "pageCount": 34,
        "pages": {},
        "criteria": {
          "title": "Lazy loading",
          "description": "Incorporate lazy/deferred loading from the start: Consider which media elements are immediately required, and which would be better relegated to loading on specific user interaction. Load data-intensive media on the client side, including the media itself, behind a facade - a non-functional and static representational element.",
          "resources": [
            {
              "Avoid hotlinking images with Cross-Origin-Resource-Policy": "https://www.sjoerdlangkemper.nl/2024/11/27/avoid-hotlinking-images-with-corp-cross-origin-resource-policy/",
              "Fast load times: Optimize Your Images": "https://web.dev/explore/fast?hl=en#optimize-your-images",
              "GPF - General Policy Framework (PDF) - 4.1 - UX and UI (Autoplay)": "https://www.arcep.fr/uploads/tx_gspublication/general_policy_framework_for_the_ecodesign_of_digital_services_version_2024.pdf",
              "GR491 - 9-5071 - Autoplay": "https://gr491.isit-europe.org/en/crit.php?id=9-5071-frontend-active-content-uses-technical-resources-to-function.",
              "GR491 - 9-5068 - Lazy Loading": "https://gr491.isit-europe.org/en/crit.php?id=9-5068-frontend-when-loading-the-service-on-the-user",
              "GreenIT - 0051 - Use lazy loading": "https://rweb.greenit.fr/en/fiches/RWEB_0051-use-lazy-loading",
              "How to Defer Offscreen Images and Background Images": "https://www.debugbear.com/blog/defer-offscreen-images",
              "Lazy Load Background Images with the IntersectionObserver API": "https://www.debugbear.com/blog/lazy-load-background-images-intersection-observer",
              "Lazy load third-party resources with facades": "https://developer.chrome.com/docs/lighthouse/performance/third-party-facades?hl=en",
              "Lazy loading (Wikipedia)": "https://en.wikipedia.org/wiki/Lazy_loading",
              "Lazy loading (Performance)": "https://developer.mozilla.org/en-US/docs/Web/Performance/Guides/Lazy_loading",
              "Lazy Loading Images Based on Screen Size": "https://www.aaron-gustafson.com/notebook/lazy-loading-images-based-on-screen-size/",
              "Non-blocking cross-browser image rendering on the canvas": "https://calendar.perfplanet.com/2025/non-blocking-image-canvas/",
              "Web Almanac: Sustainability": "https://almanac.httparchive.org/en/2024/sustainability"
            }
          ],
          "guideline": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "benefits": [
            {
              "Economic": "Eliminating data-intensive media entirely and using alternatives such as transcripts reduce costs associated with hosting and data transfer.",
              "Environment": "Reducing the battery drain associated with loading data-intensive content by preventing auto-loading or delaying it until the moment it is required reduces energy emissions associated with data transfer and renering.",
              "Performance": "Tailoring user experience to the device, situation, and environment of the user by having different resolutions and quality formats available reduces wasted bandwidth. This can boost performance for users who make choices to reduce the data downloaded.",
              "Social Equity": "Providing alternatives to data-intensive media allows with limited bandwidth or older devices to access content."
            }
          ],
          "example": "<picture> \n  <source type=\"image/avif\" srcset=\"image.avif\">\n  <source type=\"image/webp\" srcset=\"image.webp\">\n  <img width=\"100px\" height=\"100px\" src=\"image.jpg\" alt=\"\" loading=\"lazy\"/>\n</picture>"
        }
      },
      {
        "guideline": "17.1",
        "title": "Missing print style sheet",
        "urgency": "low",
        "detail": "Add a @media print stylesheet to ensure the page is optimized for paper-saving printing.",
        "wsid": "17.printed documents",
        "assessor": "script",
        "example": "@media print {\n  /* Hide non-critical navigation and backgrounds */\n  nav, .ads, header, footer { display: none; }\n  body { font-size: 12pt; color: #000; background: #fff; }\n  a::after { content: \" (\" attr(href) \") \"; } /* Show URLs */\n}",
        "pageCount": 4,
        "pages": {},
        "criteria": {
          "title": "Printed documents",
          "description": "Design your process to reduce the need for paper documents. Where the production of paper documents is essential, it should be designed to have the lowest impact possible. Include a CSS print style sheet and test it with different types of content. Encourage saving documents in digital formats over paper-based storage and archiving.",
          "resources": [
            {
              "A Guide To The State Of Print Stylesheets In 2018": "https://www.smashingmagazine.com/2018/05/print-stylesheets-in-2018/",
              "Changing Paper Consumption": "http://www.greenschools.net/article.php-id=75.html",
              "CSS Design: Going to Print": "https://alistapart.com/article/goingtoprint/",
              "GR491 - 6-3044 - Paper Printing": "https://gr491.isit-europe.org/en/crit.php?id=6-3044-uxui-the-flows-of-dematerialization-are-sometimes-broken",
              "GR491 - 9-5076 - Ink Saving": "https://gr491.isit-europe.org/en/crit.php?id=9-5076-frontend-the-flows-of-dematerialization-are-sometimes-broken",
              "GreenIT - 0031 - Provide a print CSS": "https://rweb.greenit.fr/en/fiches/RWEB_0031-provide-a-css-print",
              "How to Become an Eco Web Designer": "https://onextrapixel.com/how-to-become-an-eco-web-designer/",
              "OpQuast - 190 - The website offers styles dedicated to printing.": "https://checklists.opquast.com/en/digital-quality/the-site-provides-at-least-one-style-sheet-for-printing",
              "OpQuast - 191 - The content of each page can be printed without printing the navigation blocks.": "https://checklists.opquast.com/en/digital-quality/the-content-of-each-page-can-be-printed-without-navigation-blocks",
              "Printed - Print Friendly CSS Library": "https://printedcss.com/",
              "UI Tools": "https://designsustainably.eu/uitools/",
              "United Nations SDGS - Goal 11 - Human Habitats": "https://sdgs.un.org/goals/goal11#targets_and_indicators",
              "United Nations SDGS - Goal 12 - Consumption & Production": "https://sdgs.un.org/goals/goal12#targets_and_indicators",
              "Using UX Design to Build a Sustainable Future": "https://uxmag.com/articles/using-ux-design-to-build-a-sustainable-future",
              "Which Fonts Use The Least Ink & Toner?": "https://www.tonerbuzz.com/blog/which-fonts-use-the-least-ink-toner/"
            }
          ],
          "guideline": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "17",
            "title": "Reduce the impact of downloadable and physical documents",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-the-impact-of-downloadable-and-physical-documents",
            "subheading": "Reduce the need for physical documents as much as possible by allowing the saving of well-labeled, optimized digital downloads. Include a print style sheet to avoid resource waste."
          },
          "benefits": [
            {
              "Accessibility": "Providing a range of inclusively designed downloadable documents in a variety of formats benefits those with accessibility needs as they can choose the ideal format for their device and use case.",
              "Environment": "Reducing the need to print documents or providing a print friendly style sheet reduces emissions associated with paper, ink, and the act of printing.",
              "Performance": "Compressing or otherwise optimizing documents means they can be downloaded faster, avoiding users needing to wait to view documents prepared for offline viewing."
            }
          ],
          "example": null
        }
      },
      {
        "guideline": "12.3",
        "title": "No reduced motion support",
        "urgency": "low",
        "detail": "Implement prefers-reduced-motion to allow users to disable animations, reducing compute and improving accessibility.",
        "wsid": "12.control animation",
        "assessor": "script",
        "example": "@media (prefers-reduced-motion: reduce) {\n  *, ::before, ::after {\n    animation-duration: 0.01ms !important;\n    animation-iteration-count: 1 !important;\n    transition-duration: 0.01ms !important;\n    scroll-behavior: auto !important;\n  }\n}",
        "pageCount": 4,
        "pages": {},
        "criteria": {
          "title": "Control animation",
          "description": "Allow users to start, stop, pause, or otherwise control animated content.",
          "resources": [
            {
              "Accessible Web Animation": "https://css-tricks.com/accessible-web-animation-the-wcag-on-animation-explained/",
              "Animated sites are unique, but not always accessible": "https://uxdesign.cc/animated-sites-are-unique-but-not-always-accessible-5af54fefa092",
              "Animation and motion": "https://web.dev/learn/accessibility/motion?hl=en-us",
              "Animation that fails safely": "https://adobe.design/stories/leading-design/animation-that-fails-safely-defensive-design-for-motion-sensitive-users",
              "GPF - General Policy Framework (PDF) - 4.1 - UX and UI (Autoplay)": "https://www.arcep.fr/uploads/tx_gspublication/general_policy_framework_for_the_ecodesign_of_digital_services_version_2024.pdf",
              "GPF - General Policy Framework (PDF) - 4.6 - UX and UI (Informational Media)": "https://www.arcep.fr/uploads/tx_gspublication/general_policy_framework_for_the_ecodesign_of_digital_services_version_2024.pdf",
              "GR491 - 7-5051 - Animation Frequency": "https://gr491.isit-europe.org/en/crit.php?id=7-5051-frontend-the-presentation-of-operations-on-the-front",
              "Let users pause/stop/hide animation": "https://marcom.wwu.edu/accessibility/guide/pause-stop-hide-animation",
              "prefers-reduced-motion: Sometimes less movement is more": "https://web.dev/articles/prefers-reduced-motion?hl=en",
              "Respecting Users' Motion Preferences": "https://www.smashingmagazine.com/2021/10/respecting-users-motion-preferences/"
            }
          ],
          "guideline": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "12",
            "title": "Ensure animation is proportionate and easy to control",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-animation-is-proportionate-and-easy-to-control",
            "subheading": "Ensure any animation deemed necessary is not overdone and that the user can control its ability to run."
          },
          "benefits": [
            {
              "Environment": "Disabling and reducing animation to the essential, with appropriate optimization and user control, reduces rendering impact and associated emissions.",
              "Performance": "Compressing, removing, or otherwise reducing animation files reduces complexity, improving performance.",
              "Social Equity": "Catering to different perspectives on and preferences in relation to animation can improve acceptance and access for individuals using different devices and from different backgrounds."
            }
          ],
          "example": "@media (prefers-reduced-motion: reduce) {\r\n\tbody *,\r\n\tbody *::before,\r\n\tbody *::after {\r\n\t\tanimation-delay: -1ms !important;\r\n\t\tanimation-duration: 1ms !important;\r\n\t\tanimation-iteration-count: 1 !important;\r\n\t\tbackground-attachment: initial !important;\r\n\t\ttransition-duration: 1ms !important;\r\n\t\ttransition-delay: -1ms !important;\r\n\t\tscroll-behavior: auto !important;\r\n\t}\r\n}"
        }
      },
      {
        "guideline": "13.1",
        "title": "Missing system font fallback",
        "urgency": "medium",
        "detail": "Primary font \"\"Times New Roman\"\" does not appear to use a system font stack fallback. System fonts reduce network requests and improve rendering performance.",
        "wsid": "13.pre-installed typefaces",
        "assessor": "script",
        "example": "body {\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\";\n}",
        "pageCount": 4,
        "pages": {},
        "criteria": {
          "title": "Pre-installed typefaces",
          "description": "Use pre-installed fonts, such as system fonts, wherever possible, to reduce the reliance on user-installed or web fonts.",
          "resources": [
            {
              "Apple System Fonts": "https://developer.apple.com/fonts/system-fonts/",
              "CSS Fonts": "https://www.cssfontstack.com/",
              "Fabulous Font-Face Fallbacks": "https://calendar.perfplanet.com/2024/fabulous-font-face-fallbacks/",
              "Fallback Font Generator": "https://screenspan.net/fallback",
              "Fallback lister": "https://r12a.github.io/scripts/fontlist/",
              "Font style matcher": "https://meowni.ca/font-style-matcher/",
              "GR491 - 2-4016 - System Fonts": "https://gr491.isit-europe.org/en/crit.php?id=2-4016-contents-system-fonts-are-embedded-in-the-presentation",
              "GreenIT - 0032 - Prefer standard fonts": "https://rweb.greenit.fr/en/fiches/RWEB_0032-prefer-standard-fonts",
              "How can we design sustainably?": "https://medium.com/@sandra.pallier/how-can-we-design-sustainably-3be7530a0f5b",
              "List of typefaces included with macOS": "https://en.wikipedia.org/wiki/List_of_typefaces_included_with_macOS",
              "List of typefaces included with Microsoft Windows": "https://en.wikipedia.org/wiki/List_of_typefaces_included_with_Microsoft_Windows",
              "Matrix of fonts bundled with Mac and Windows operating systems, Microsoft Office and Adobe Creative Suite": "https://media.24ways.org/2007/17/fontmatrix.html",
              "Modern Font Stacks": "https://modernfontstacks.com/",
              "System Font Stack": "https://systemfontstack.com/",
              "Using UX Design to Build a Sustainable Future": "https://uxmag.com/articles/using-ux-design-to-build-a-sustainable-future",
              "Web Almanac: Sustainability": "https://almanac.httparchive.org/en/2024/sustainability",
              "Web fonts: when you need them, when you don't": "https://david-gilbertson.medium.com/web-fonts-when-you-need-them-when-you-dont-a3b4b39fe0ae"
            }
          ],
          "guideline": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "13",
            "title": "Use optimized and appropriate web typography",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-optimized-and-appropriate-web-typography",
            "subheading": "Provide custom fonts in the most suitable file format, but with a preference for pre-installed typefaces where possible."
          },
          "benefits": [
            {
              "Environment": "Reducing the number and complexity of custom fonts used reduces data transfer and rendering effort, which lowers associated emissions.",
              "Performance": "Using optimized web fonts or system fonts supports a smoother user experience and faster rendering.",
              "Social Equity": "System fonts are preinstalled and are reliable, ensuring content can always be presented fast in a font users are familiar with."
            }
          ],
          "example": "font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif;"
        }
      },
      {
        "guideline": "3.7",
        "title": "Missing main content landmark",
        "urgency": "medium",
        "detail": "No <main> or role=\"main\" tags found. Semantic HTML reduces code bloat and allows both assistive technology and web crawlers to parse content more efficiently.",
        "wsid": "3.ensure code follows good semantic practices",
        "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-code-follows-good-semantic-practices",
        "assessor": "script",
        "example": "<main>\n  <article>\n    <h1>Page Title</h1>\n    <p>Content goes here.</p>\n  </article>\n</main>",
        "pageCount": 4,
        "pages": {},
        "criteria": null
      }
    ]
  },
  "siteGuidance": {
    "siteCount": 1,
    "singleSiteScan": true,
    "sites": [
      {
        "origin": "https://ufo50.miraheze.org",
        "pageCount": 100,
        "sharedRecommendations": [
          {
            "area": "expected-files",
            "urgency": "low",
            "title": "Publish .well-known/security.txt",
            "detail": ".well-known/security.txt is missing for all sampled pages on https://ufo50.miraheze.org."
          },
          {
            "area": "offline-support",
            "urgency": "high",
            "title": "Introduce service worker support",
            "detail": "No sampled pages on https://ufo50.miraheze.org indicate service worker support for offline resilience."
          },
          {
            "area": "offline-support",
            "urgency": "high",
            "title": "Support offline fallback behavior",
            "detail": "Offline page behavior was not detected across sampled pages on https://ufo50.miraheze.org."
          },
          {
            "area": "offline-support",
            "urgency": "high",
            "title": "Prioritize recurring offline/caching improvements",
            "detail": "Add service worker support is needed across 100 pages on https://ufo50.miraheze.org."
          }
        ],
        "recurringCompression": [],
        "recurringOptimization": [],
        "recurringOfflineOpportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "pageCount": 100
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "pageCount": 100
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "pageCount": 100
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "pageCount": 100
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "pageCount": 100
          }
        ],
        "recurringDependencies": [],
        "recurringRuntimeSignals": [],
        "pageSpecific": [
          {
            "url": "https://ufo50.miraheze.org/wiki/Planet_Zoldath",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Attactics",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Devilition",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Kick_Club",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Avianos",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Mooncat",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Bushido_Ball",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Block_Koala",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Camouflage",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Campanella",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Golfaria",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/The_Big_Bell_Race",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Warptank",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Waldorf%27s_Journey",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Porgy",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Onion_Delivery",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Caramel_Caramel",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Party_House",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Hot_Foot",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Divers",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Rail_Heist",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Vainger",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Rock_On!_Island",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Pingolf",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Mortol_II",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Fist_Hell",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Overbold",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Campanella_2",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Hyper_Contender",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Valbrace",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Rakshasa",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Star_Waspir",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Grimstone",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Lords_of_Diskonia",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Night_Manor",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Elfazar%27s_Hat",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Pilot_Quest",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Mini_%26_Max",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Combatants",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Quibble_Race",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Seaside_Drive",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Campanella_3",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Cyber_Owls",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/List_of_Games",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Singleplayer",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Multiplayer",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Epic_Play",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Quick_Play",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Thinky_Play",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Reflex_Play",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Adventure",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/RPG",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Puzzle",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Strategy",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Arcade",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Sport",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Shooter",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Platform",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Simulation",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 80,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Ninpek",
            "securityScore": 26,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 27,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Paint_Chase",
            "securityScore": 26,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 27,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Main_Page?veaction=edit&amp;section=1",
            "securityScore": 26,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 25,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/UFO_50_Recovery_Team",
            "securityScore": 26,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 13,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Bug_Hunter",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 28,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Velgress",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 28,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Barbuta",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 27,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Magic_Garden",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Mortol",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 26,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 25,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Main_Page",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 25,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Main_Page?veaction=edit",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 25,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Main_Page?oldid=6306",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 25,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Main_Page?veaction=edit&amp;section=2",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 25,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Special:Random",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 22,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/UFO_Soft",
            "securityScore": 26,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/w/load.php?lang=en&amp;modules=ext.MobileDetect.nomobile%7Cext.visualEditor.desktopArticleTarget.noscript%7Cskins.citizen.codex.styles%7Cskins.citizen.icons%2Cstyles&amp;only=styles&amp;skin=citizen",
            "securityScore": 19,
            "dependencyScore": 0,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/w/load.php?lang=en&amp;modules=site.styles&amp;only=styles&amp;skin=citizen",
            "securityScore": 19,
            "dependencyScore": 0,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/w/api.php?action=appmanifest",
            "securityScore": 19,
            "dependencyScore": 0,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Special:RecentChanges?feed=atom",
            "securityScore": 19,
            "dependencyScore": 0,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Special:CreateAccount?returnto=Main+Page",
            "securityScore": 8,
            "dependencyScore": 4,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Main_Page?action=edit",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/auth.miraheze.org",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Special:RecentChanges",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Special:SpecialPages",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Special:UploadWizard",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Special:MyTalk",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Special:MyContributions",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Special:UserLogin?returnto=Main+Page",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Main_Page?action=history",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Talk:Main_Page?action=edit&amp;redlink=1",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Main_Page?action=purge",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Special:WhatLinksHere/Main_Page",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Main_Page?action=info",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Special:CiteThisPage?page=Main_Page&amp;id=6306&amp;wpFormIdentifier=titleform",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Special:UrlShortener?url=https%3A%2F%2Fufo50.miraheze.org%2Fwiki%2FMain_Page",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Main_Page?action=edit&amp;section=1",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Main_Page?action=edit&amp;section=2",
            "securityScore": 6,
            "dependencyScore": 2,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/wiki/Special:RecentChangesLinked/Main_Page",
            "securityScore": 4,
            "dependencyScore": 0,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/w/rest.php/v1/search",
            "securityScore": 0,
            "dependencyScore": 0,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          },
          {
            "url": "https://ufo50.miraheze.org/w/api.php?action=rsd",
            "securityScore": 0,
            "dependencyScore": 0,
            "expectedFilesScore": 25,
            "compressionScore": 0,
            "optimizationScore": 0,
            "offlineScore": 100,
            "languageScore": 0,
            "mediaHintsScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "No major compression opportunity detected",
                "urgency": "low",
                "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
              },
              {
                "title": "No obvious optimization bloat signals",
                "urgency": "low",
                "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
              },
              {
                "title": "Add service worker support",
                "urgency": "high",
                "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
              },
              {
                "title": "Ensure critical routes work offline",
                "urgency": "high",
                "detail": "Provide an offline fallback strategy for key pages and shell assets."
              }
            ]
          }
        ]
      }
    ]
  },
  "crossPagePatterns": {
    "heavyAssetPatterns": [
      {
        "key": "xhr|challenges.cloudflare.com|/cdn-cgi",
        "label": "xhr assets from challenges.cloudflare.com/cdn-cgi",
        "resourceType": "xhr",
        "domain": "challenges.cloudflare.com",
        "pageCount": 35,
        "totalTransferBytes": 9556373,
        "exampleUrl": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef63e6a7d5baf22/1foeK4tRMu1gAlUx3Wu0hS8Wyd2F7JytuDNfQwFPD4o-1776710073-1.2.1.1-uernD9k_GPORljBUdA49z8YC_qMKQmBuNwrZjnIjz0.cO.2sd_0xXWhrpUNrDjEe"
      },
      {
        "key": "script|ufo50.miraheze.org|/cdn-cgi",
        "label": "script assets from ufo50.miraheze.org/cdn-cgi",
        "resourceType": "script",
        "domain": "ufo50.miraheze.org",
        "pageCount": 24,
        "totalTransferBytes": 1749188,
        "exampleUrl": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef63ecc0d376c10"
      }
    ],
    "recurringTargets": [
      {
        "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
        "urgency": "high",
        "pageCount": 35,
        "totalEstimatedSavingsBytes": 9556373,
        "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger."
      },
      {
        "title": "Modularize heavy script asset from ufo50.miraheze.org",
        "urgency": "medium",
        "pageCount": 24,
        "totalEstimatedSavingsBytes": 1749188,
        "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles."
      }
    ],
    "recurringOrigins": [
      {
        "domain": "challenges.cloudflare.com",
        "pageCount": 35,
        "totalTransferBytes": 9556373
      },
      {
        "domain": "ufo50.miraheze.org",
        "pageCount": 24,
        "totalTransferBytes": 1749188
      }
    ],
    "designSystemGuidance": [
      "This same heavy xhr pattern appears on 35 pages. Fix it once in the shared template, CMS block, or design system component to reduce load across the whole site.",
      "These 1 script bundles are recurring modularization targets. Move the fix to the shared bundle or component boundary so every affected page gets lighter at once.",
      "These 2 modularization targets recur across multiple pages. Centralize the fix at the component or bundle level instead of treating each page separately.",
      "Heavy assets from challenges.cloudflare.com recur across 35 pages. Review whether that dependency should be deferred, optimized, or loaded conditionally."
    ]
  },
  "results": [
    {
      "url": "https://ufo50.miraheze.org/",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 563691,
      "co2Grams": 0.21593953744740002,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40.495249",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17778,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 0,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": false
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "",
          "robots": "max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Main_Page",
          "ogTitle": "UFO 50 Wiki",
          "ogDescription": "",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Main_Page",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 57,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 157,
          "tabletSmallTapTargets": 157,
          "fixedWidthOffenders": 16,
          "oversizedMedia": 0,
          "gridContainersDetected": 20,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 10,
            "smallTapTargets": 157,
            "oversizedMedia": 0,
            "gridContainersDetected": 10,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 6,
            "smallTapTargets": 157,
            "oversizedMedia": 0,
            "gridContainersDetected": 10,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 157 small targets on mobile and 157 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "high",
            "detail": "16 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "accept-ranges": "bytes",
            "age": "67628",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef63ea67fa46c10-DFW",
            "content-encoding": "gzip",
            "content-language": "en",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:34:43 GMT",
            "expect-ct": "max-age=86400, enforce",
            "last-modified": "Tue, 14 Apr 2026 23:47:35 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp171 hit/111",
            "x-cache-status": "hit-remote",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw153.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Main_Page"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 57,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 52
        },
        "recommendations": [
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "high",
            "detail": "52 of 57 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 57,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/57 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 3302
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 3.22 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 3.22 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 563691,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 563691,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 68985,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef63e67dcbb6c10",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17778,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17778,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 563691,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 20,
        "urgency": "medium",
        "totalTransferBytes": 563691,
        "heavyRequestCount": 1,
        "heavyBytes": 272849,
        "heavyRatio": 0.48404001483082043,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef63e6a7d5baf22/1foeK4tRMu1gAlUx3Wu0hS8Wyd2F7JytuDNfQwFPD4o-1776710073-1.2.1.1-uernD9k_GPORljBUdA49z8YC_qMKQmBuNwrZjnIjz0.cO.2sd_0xXWhrpUNrDjEe",
            "transferSize": 272849,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 272849
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 272849
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 272849,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef63e6a7d5baf22/1foeK4tRMu1gAlUx3Wu0hS8Wyd2F7JytuDNfQwFPD4o-1776710073-1.2.1.1-uernD9k_GPORljBUdA49z8YC_qMKQmBuNwrZjnIjz0.cO.2sd_0xXWhrpUNrDjEe",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/w/load.php?lang=en&amp;modules=ext.MobileDetect.nomobile%7Cext.visualEditor.desktopArticleTarget.noscript%7Cskins.citizen.codex.styles%7Cskins.citizen.icons%2Cstyles&amp;only=styles&amp;skin=citizen",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/w/load.php?lang=en&amp;modules=ext.MobileDetect.nomobile%7Cext.visualEditor.desktopArticleTarget.noscript%7Cskins.citizen.codex.styles%7Cskins.citizen.icons%2Cstyles&amp;only=styles&amp;skin=citizen",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 559688,
      "co2Grams": 0.21440606260320003,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17791,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 85,
        "urgency": "high",
        "checks": {
          "hasTitle": false,
          "hasLang": false,
          "hasDescription": false,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": false,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "",
          "lang": "",
          "charset": "",
          "viewport": "",
          "description": "",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add document language metadata",
            "urgency": "high",
            "detail": "Set the html lang attribute for machine readability and localization tooling."
          },
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 980,
            "viewportHeight": 2121,
            "contentWidth": 980,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 980,
            "viewportHeight": 1411,
            "contentWidth": 980,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 19,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": false,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "37",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, max-age=300, s-maxage=300, stale-while-revalidate=60",
            "cf-cache-status": "HIT",
            "cf-ray": "9ef63ef06bbf6c10-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' *.miraheze.org *.wikitide.org *.wikitide.net;  script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.wikitide.org *.wikitide.net ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net www.gstatic.cn hcaptcha.com *.hcaptcha.com challenges.cloudflare.com;  style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.wikitide.org *.wikitide.net www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net cdnjs.cloudflare.com hcaptcha.com *.hcaptcha.com;  img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.wikitide.org *.wikitide.net;  font-src 'self' data: *.miraheze.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net;  media-src 'self' blob: *.miraheze.org *.wikitide.org *.wikitide.net upload.wikimedia.org;  frame-src 'self' *.miraheze.org *.wikitide.org *.wikitide.net archive.org;  connect-src 'self' blob: *.miraheze.org *.wikitide.org *.wikitide.net cdn.jsdelivr.net hcaptcha.com *.hcaptcha.com 1.1.1.1;",
            "content-type": "text/javascript; charset=utf-8",
            "date": "Mon, 20 Apr 2026 18:34:55 GMT",
            "etag": "W/\"\"",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Mon, 20 Apr 2026 18:39:17 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "sourcemap": "/w/load.php?lang=en&modules=&sourcemap=1&version=",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "vary": "accept-encoding",
            "x-cache": "cp201 miss",
            "x-cache-status": "miss",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw182.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/w/load.php?amp;modules=ext.MobileDetect.nomobile%7Cext.visualEditor.desktopArticleTarget.noscript%7Cskins.citizen.codex.styles%7Cskins.citizen.icons%2Cstyles&amp;only=styles&amp;skin=citizen&lang=en"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Enable Strict-Transport-Security",
            "urgency": "medium",
            "detail": "Set a Strict-Transport-Security header to enforce HTTPS on repeat visits."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": true,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 60,
        "urgency": "high",
        "data": {
          "hasPrintStyles": false,
          "hasReducedMotion": false,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Times New Roman\"",
            "usesSystemFont": false
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": false
          }
        },
        "recommendations": [
          {
            "guideline": "17.1",
            "title": "Missing print style sheet",
            "urgency": "low",
            "detail": "Add a @media print stylesheet to ensure the page is optimized for paper-saving printing.",
            "wsid": "17.printed documents",
            "assessor": "script",
            "example": "@media print {\n  /* Hide non-critical navigation and backgrounds */\n  nav, .ads, header, footer { display: none; }\n  body { font-size: 12pt; color: #000; background: #fff; }\n  a::after { content: \" (\" attr(href) \") \"; } /* Show URLs */\n}"
          },
          {
            "guideline": "12.3",
            "title": "No reduced motion support",
            "urgency": "low",
            "detail": "Implement prefers-reduced-motion to allow users to disable animations, reducing compute and improving accessibility.",
            "wsid": "12.control animation",
            "assessor": "script",
            "example": "@media (prefers-reduced-motion: reduce) {\n  *, ::before, ::after {\n    animation-duration: 0.01ms !important;\n    animation-iteration-count: 1 !important;\n    transition-duration: 0.01ms !important;\n    scroll-behavior: auto !important;\n  }\n}"
          },
          {
            "guideline": "13.1",
            "title": "Missing system font fallback",
            "urgency": "medium",
            "detail": "Primary font \"\"Times New Roman\"\" does not appear to use a system font stack fallback. System fonts reduce network requests and improve rendering performance.",
            "wsid": "13.pre-installed typefaces",
            "assessor": "script",
            "example": "body {\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\";\n}"
          },
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "3.7",
            "title": "Missing main content landmark",
            "urgency": "medium",
            "detail": "No <main> or role=\"main\" tags found. Semantic HTML reduces code bloat and allows both assistive technology and web crawlers to parse content more efficiently.",
            "wsid": "3.ensure code follows good semantic practices",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-code-follows-good-semantic-practices",
            "assessor": "script",
            "example": "<main>\n  <article>\n    <h1>Page Title</h1>\n    <p>Content goes here.</p>\n  </article>\n</main>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1115
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.09 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.09 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 559688,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 559688,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 72551,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef63ecc0d376c10",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17791,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17791,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 559688,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 26,
        "urgency": "medium",
        "totalTransferBytes": 559688,
        "heavyRequestCount": 2,
        "heavyBytes": 339740,
        "heavyRatio": 0.607016766484184,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef63ece5c80af22/Mu1Uln3E.Z0ff.7N8BP_MCBRbHyej.fEEFC9Xpx_XqI-1776710089-1.2.1.1-m2uMBVGYK0al.ZTFPPWtLYEiO9ZbJzUJlaTJt715hEHbrYFXPnzdzYahguUhqCGr",
            "transferSize": 267189,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          },
          {
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef63ecc0d376c10",
            "transferSize": 72551,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "ufo50.miraheze.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 267189
          },
          {
            "resourceType": "script",
            "count": 1,
            "transferBytes": 72551
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 267189
          },
          {
            "domain": "ufo50.miraheze.org",
            "count": 1,
            "transferBytes": 72551
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 267189,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef63ece5c80af22/Mu1Uln3E.Z0ff.7N8BP_MCBRbHyej.fEEFC9Xpx_XqI-1776710089-1.2.1.1-m2uMBVGYK0al.ZTFPPWtLYEiO9ZbJzUJlaTJt715hEHbrYFXPnzdzYahguUhqCGr",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from ufo50.miraheze.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 72551,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef63ecc0d376c10",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/w/load.php?lang=en&amp;modules=site.styles&amp;only=styles&amp;skin=citizen",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/w/load.php?lang=en&amp;modules=site.styles&amp;only=styles&amp;skin=citizen",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 85,
        "urgency": "high",
        "checks": {
          "hasTitle": false,
          "hasLang": false,
          "hasDescription": false,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": false,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "",
          "lang": "",
          "charset": "",
          "viewport": "",
          "description": "",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add document language metadata",
            "urgency": "high",
            "detail": "Set the html lang attribute for machine readability and localization tooling."
          },
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 980,
            "viewportHeight": 2121,
            "contentWidth": 980,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 980,
            "viewportHeight": 1411,
            "contentWidth": 980,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 19,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": false,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "45",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "public, max-age=300, s-maxage=300, stale-while-revalidate=60",
            "cf-cache-status": "HIT",
            "cf-ray": "9ef63f23383e6c10-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' *.miraheze.org *.wikitide.org *.wikitide.net;  script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.wikitide.org *.wikitide.net ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net www.gstatic.cn hcaptcha.com *.hcaptcha.com challenges.cloudflare.com;  style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.wikitide.org *.wikitide.net www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net cdnjs.cloudflare.com hcaptcha.com *.hcaptcha.com;  img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.wikitide.org *.wikitide.net;  font-src 'self' data: *.miraheze.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net;  media-src 'self' blob: *.miraheze.org *.wikitide.org *.wikitide.net upload.wikimedia.org;  frame-src 'self' *.miraheze.org *.wikitide.org *.wikitide.net archive.org;  connect-src 'self' blob: *.miraheze.org *.wikitide.org *.wikitide.net cdn.jsdelivr.net hcaptcha.com *.hcaptcha.com 1.1.1.1;",
            "content-type": "text/javascript; charset=utf-8",
            "date": "Mon, 20 Apr 2026 18:35:03 GMT",
            "etag": "W/\"\"",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Mon, 20 Apr 2026 18:39:17 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "sourcemap": "/w/load.php?lang=en&modules=&sourcemap=1&version=",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "vary": "accept-encoding",
            "x-cache": "cp201 miss",
            "x-cache-status": "miss",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw183.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/w/load.php?amp;modules=site.styles&amp;only=styles&amp;skin=citizen&lang=en"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Enable Strict-Transport-Security",
            "urgency": "medium",
            "detail": "Set a Strict-Transport-Security header to enforce HTTPS on repeat visits."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": true,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 60,
        "urgency": "high",
        "data": {
          "hasPrintStyles": false,
          "hasReducedMotion": false,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Times New Roman\"",
            "usesSystemFont": false
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": false
          }
        },
        "recommendations": [
          {
            "guideline": "17.1",
            "title": "Missing print style sheet",
            "urgency": "low",
            "detail": "Add a @media print stylesheet to ensure the page is optimized for paper-saving printing.",
            "wsid": "17.printed documents",
            "assessor": "script",
            "example": "@media print {\n  /* Hide non-critical navigation and backgrounds */\n  nav, .ads, header, footer { display: none; }\n  body { font-size: 12pt; color: #000; background: #fff; }\n  a::after { content: \" (\" attr(href) \") \"; } /* Show URLs */\n}"
          },
          {
            "guideline": "12.3",
            "title": "No reduced motion support",
            "urgency": "low",
            "detail": "Implement prefers-reduced-motion to allow users to disable animations, reducing compute and improving accessibility.",
            "wsid": "12.control animation",
            "assessor": "script",
            "example": "@media (prefers-reduced-motion: reduce) {\n  *, ::before, ::after {\n    animation-duration: 0.01ms !important;\n    animation-iteration-count: 1 !important;\n    transition-duration: 0.01ms !important;\n    scroll-behavior: auto !important;\n  }\n}"
          },
          {
            "guideline": "13.1",
            "title": "Missing system font fallback",
            "urgency": "medium",
            "detail": "Primary font \"\"Times New Roman\"\" does not appear to use a system font stack fallback. System fonts reduce network requests and improve rendering performance.",
            "wsid": "13.pre-installed typefaces",
            "assessor": "script",
            "example": "body {\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\";\n}"
          },
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "3.7",
            "title": "Missing main content landmark",
            "urgency": "medium",
            "detail": "No <main> or role=\"main\" tags found. Semantic HTML reduces code bloat and allows both assistive technology and web crawlers to parse content more efficiently.",
            "wsid": "3.ensure code follows good semantic practices",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-code-follows-good-semantic-practices",
            "assessor": "script",
            "example": "<main>\n  <article>\n    <h1>Page Title</h1>\n    <p>Content goes here.</p>\n  </article>\n</main>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/w/api.php?action=appmanifest",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/w/api.php?action=appmanifest",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 80,
        "urgency": "high",
        "checks": {
          "hasTitle": false,
          "hasLang": false,
          "hasDescription": false,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": false,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "",
          "lang": "",
          "charset": "utf-8",
          "viewport": "",
          "description": "",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add document language metadata",
            "urgency": "high",
            "detail": "Set the html lang attribute for machine readability and localization tooling."
          },
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 980,
            "viewportHeight": 2121,
            "contentWidth": 980,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 980,
            "viewportHeight": 1411,
            "contentWidth": 980,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 19,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": false,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "23614",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "max-age=604800, s-maxage=604800, public",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef63f551c2e6c10-DFW",
            "content-disposition": "inline; filename=api-result.webmanifest",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self'; script-src 'none'; object-src 'none'",
            "content-type": "application/manifest+json; charset=utf-8",
            "date": "Mon, 20 Apr 2026 18:35:11 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Mon, 27 Apr 2026 12:01:37 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "vary": "Accept-Encoding, Treat-as-Untrusted, Cookie, Authorization",
            "x-cache": "cp171 hit/57",
            "x-cache-status": "hit-remote",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-robots-tag": "noindex",
            "x-served-by": "mw191.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/w/api.php?action=appmanifest"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Enable Strict-Transport-Security",
            "urgency": "medium",
            "detail": "Set a Strict-Transport-Security header to enforce HTTPS on repeat visits."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": true,
          "hasDarkModeQuery": false,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 60,
        "urgency": "high",
        "data": {
          "hasPrintStyles": false,
          "hasReducedMotion": false,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Times New Roman\"",
            "usesSystemFont": false
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": false
          }
        },
        "recommendations": [
          {
            "guideline": "17.1",
            "title": "Missing print style sheet",
            "urgency": "low",
            "detail": "Add a @media print stylesheet to ensure the page is optimized for paper-saving printing.",
            "wsid": "17.printed documents",
            "assessor": "script",
            "example": "@media print {\n  /* Hide non-critical navigation and backgrounds */\n  nav, .ads, header, footer { display: none; }\n  body { font-size: 12pt; color: #000; background: #fff; }\n  a::after { content: \" (\" attr(href) \") \"; } /* Show URLs */\n}"
          },
          {
            "guideline": "12.3",
            "title": "No reduced motion support",
            "urgency": "low",
            "detail": "Implement prefers-reduced-motion to allow users to disable animations, reducing compute and improving accessibility.",
            "wsid": "12.control animation",
            "assessor": "script",
            "example": "@media (prefers-reduced-motion: reduce) {\n  *, ::before, ::after {\n    animation-duration: 0.01ms !important;\n    animation-iteration-count: 1 !important;\n    transition-duration: 0.01ms !important;\n    scroll-behavior: auto !important;\n  }\n}"
          },
          {
            "guideline": "13.1",
            "title": "Missing system font fallback",
            "urgency": "medium",
            "detail": "Primary font \"\"Times New Roman\"\" does not appear to use a system font stack fallback. System fonts reduce network requests and improve rendering performance.",
            "wsid": "13.pre-installed typefaces",
            "assessor": "script",
            "example": "body {\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\";\n}"
          },
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "3.7",
            "title": "Missing main content landmark",
            "urgency": "medium",
            "detail": "No <main> or role=\"main\" tags found. Semantic HTML reduces code bloat and allows both assistive technology and web crawlers to parse content more efficiently.",
            "wsid": "3.ensure code follows good semantic practices",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-code-follows-good-semantic-practices",
            "assessor": "script",
            "example": "<main>\n  <article>\n    <h1>Page Title</h1>\n    <p>Content goes here.</p>\n  </article>\n</main>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Main_Page?action=edit",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Main_Page?action=edit",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 50,
        "urgency": "medium",
        "pageElementOccurrences": 4,
        "uniqueElementsAssessed": 4,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          },
          {
            "signature": "form|post|/wiki/main_page?action=submit|input|text|wpantispam|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "wpantispam",
            "formContext": "form|post|/wiki/main_page?action=submit",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|post|/wiki/main_page?action=submit|textarea|textarea|wptextbox1|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "textarea",
            "fieldName": "wptextbox1",
            "formContext": "form|post|/wiki/main_page?action=submit",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|post|/wiki/main_page?action=submit|input|text|wpsummary|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "wpsummary",
            "formContext": "form|post|/wiki/main_page?action=submit",
            "hasLabel": true,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 30,
              "urgency": "medium",
              "issues": [
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": false
          }
        ],
        "recommendations": [
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "4 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "3 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "3 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Editing Main Page - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "",
          "robots": "noindex,nofollow,max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Main_Page",
          "ogTitle": "Editing Main Page - UFO 50 Wiki",
          "ogDescription": "",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Main_Page",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 24,
          "tabletSmallTapTargets": 24,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 24,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 24,
            "oversizedMedia": 0,
            "gridContainersDetected": 12,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 24,
            "oversizedMedia": 0,
            "gridContainersDetected": 12,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 24 small targets on mobile and 24 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef63f940e4d6c10-DFW",
            "content-encoding": "gzip",
            "content-language": "en",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:35:21 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp171 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw191.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Main_Page?action=edit"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 1
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/w/rest.php/v1/search",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/w/rest.php/v1/search",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 541976,
      "co2Grams": 0.20762092484640005,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17792,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "Form validation scan could not complete",
            "urgency": "medium",
            "detail": "net::ERR_ABORTED at https://ufo50.miraheze.org/w/rest.php/v1/search"
          }
        ]
      },
      "metadata": {
        "score": 0,
        "urgency": "low",
        "checks": {},
        "recommendations": [
          {
            "title": "Metadata scan could not complete",
            "urgency": "medium",
            "detail": "net::ERR_ABORTED at https://ufo50.miraheze.org/w/rest.php/v1/search"
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": false,
          "testedTablet": false,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 2
        },
        "perDevice": [
          {
            "device": "mobile",
            "error": "net::ERR_ABORTED at https://ufo50.miraheze.org/w/rest.php/v1/search"
          },
          {
            "device": "tablet",
            "error": "net::ERR_ABORTED at https://ufo50.miraheze.org/w/rest.php/v1/search"
          }
        ],
        "recommendations": [
          {
            "title": "Stabilize layout checks for all devices",
            "urgency": "medium",
            "detail": "2 device layout check(s) did not complete. Ensure pages can be rendered consistently under mobile and tablet viewports."
          }
        ]
      },
      "securityLight": {
        "score": 0,
        "urgency": "low",
        "checks": {},
        "observed": {},
        "recommendations": [
          {
            "title": "Lightweight security scan could not complete",
            "urgency": "medium",
            "detail": "net::ERR_ABORTED at https://ufo50.miraheze.org/w/rest.php/v1/search"
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {},
        "recommendations": [
          {
            "title": "Media hints scan could not complete",
            "urgency": "medium",
            "detail": "net::ERR_ABORTED at https://ufo50.miraheze.org/w/rest.php/v1/search"
          }
        ]
      },
      "wsgCustom": {
        "score": 0,
        "urgency": "low",
        "error": "net::ERR_ABORTED at https://ufo50.miraheze.org/w/rest.php/v1/search",
        "recommendations": []
      },
      "gridAware": {
        "detected": false,
        "signals": {},
        "error": "net::ERR_ABORTED at https://ufo50.miraheze.org/w/rest.php/v1/search",
        "recommendations": []
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 2026
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.98 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.98 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 541976,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 541976,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 71854,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef63fbcfd3e6c10",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17792,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17792,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 541976,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 28,
        "urgency": "medium",
        "totalTransferBytes": 541976,
        "heavyRequestCount": 2,
        "heavyBytes": 348827,
        "heavyRatio": 0.6436207507343499,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef63fbf5de5af22/v3Ow_VccA3XlANDgNmCBi7kwu7Y3kk_uoUbZPZSrNso-1776710128-1.2.1.1-cAo1pIwdsS6zjFW1WnvnBLbOuH8ql4tlN6TFI_bvubhhN.FkQgmk9pWTc0xa2gX2",
            "transferSize": 276973,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          },
          {
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef63fbcfd3e6c10",
            "transferSize": 71854,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "ufo50.miraheze.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 276973
          },
          {
            "resourceType": "script",
            "count": 1,
            "transferBytes": 71854
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 276973
          },
          {
            "domain": "ufo50.miraheze.org",
            "count": 1,
            "transferBytes": 71854
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 276973,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef63fbf5de5af22/v3Ow_VccA3XlANDgNmCBi7kwu7Y3kk_uoUbZPZSrNso-1776710128-1.2.1.1-cAo1pIwdsS6zjFW1WnvnBLbOuH8ql4tlN6TFI_bvubhhN.FkQgmk9pWTc0xa2gX2",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from ufo50.miraheze.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 71854,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef63fbcfd3e6c10",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/w/api.php?action=rsd",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/w/api.php?action=rsd",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "Form validation scan could not complete",
            "urgency": "medium",
            "detail": "net::ERR_ABORTED at https://ufo50.miraheze.org/w/api.php?action=rsd"
          }
        ]
      },
      "metadata": {
        "score": 0,
        "urgency": "low",
        "checks": {},
        "recommendations": [
          {
            "title": "Metadata scan could not complete",
            "urgency": "medium",
            "detail": "net::ERR_ABORTED at https://ufo50.miraheze.org/w/api.php?action=rsd"
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": false,
          "testedTablet": false,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 2
        },
        "perDevice": [
          {
            "device": "mobile",
            "error": "net::ERR_ABORTED at https://ufo50.miraheze.org/w/api.php?action=rsd"
          },
          {
            "device": "tablet",
            "error": "net::ERR_ABORTED at https://ufo50.miraheze.org/w/api.php?action=rsd"
          }
        ],
        "recommendations": [
          {
            "title": "Stabilize layout checks for all devices",
            "urgency": "medium",
            "detail": "2 device layout check(s) did not complete. Ensure pages can be rendered consistently under mobile and tablet viewports."
          }
        ]
      },
      "securityLight": {
        "score": 0,
        "urgency": "low",
        "checks": {},
        "observed": {},
        "recommendations": [
          {
            "title": "Lightweight security scan could not complete",
            "urgency": "medium",
            "detail": "net::ERR_ABORTED at https://ufo50.miraheze.org/w/api.php?action=rsd"
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {},
        "recommendations": [
          {
            "title": "Media hints scan could not complete",
            "urgency": "medium",
            "detail": "net::ERR_ABORTED at https://ufo50.miraheze.org/w/api.php?action=rsd"
          }
        ]
      },
      "wsgCustom": {
        "score": 0,
        "urgency": "low",
        "error": "net::ERR_ABORTED at https://ufo50.miraheze.org/w/api.php?action=rsd",
        "recommendations": []
      },
      "gridAware": {
        "detected": false,
        "signals": {},
        "error": "net::ERR_ABORTED at https://ufo50.miraheze.org/w/api.php?action=rsd",
        "recommendations": []
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Main_Page",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Main_Page",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "",
          "robots": "max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Main_Page",
          "ogTitle": "UFO 50 Wiki",
          "ogDescription": "",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Main_Page",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 57,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 157,
          "tabletSmallTapTargets": 157,
          "fixedWidthOffenders": 16,
          "oversizedMedia": 0,
          "gridContainersDetected": 20,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 10,
            "smallTapTargets": 157,
            "oversizedMedia": 0,
            "gridContainersDetected": 10,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 6,
            "smallTapTargets": 157,
            "oversizedMedia": 0,
            "gridContainersDetected": 10,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 157 small targets on mobile and 157 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "high",
            "detail": "16 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "accept-ranges": "bytes",
            "age": "67694",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef640451fca8e7c-DFW",
            "content-encoding": "gzip",
            "content-language": "en",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:35:49 GMT",
            "expect-ct": "max-age=86400, enforce",
            "last-modified": "Tue, 14 Apr 2026 23:47:35 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp171 hit/119",
            "x-cache-status": "hit-remote",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw153.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Main_Page"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 57,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 52
        },
        "recommendations": [
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "high",
            "detail": "52 of 57 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 57,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/57 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Special:RecentChanges?feed=atom",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Special:RecentChanges?feed=atom",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 567691,
      "co2Grams": 0.21747186304740002,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17722,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 65,
        "urgency": "high",
        "checks": {
          "hasTitle": true,
          "hasLang": false,
          "hasDescription": false,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": false,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "UFO 50 Wiki  - Recent changes [en]",
          "lang": "",
          "charset": "",
          "viewport": "",
          "description": "",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add document language metadata",
            "urgency": "high",
            "detail": "Set the html lang attribute for machine readability and localization tooling."
          },
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 980,
            "viewportHeight": 2121,
            "contentWidth": 980,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 980,
            "viewportHeight": 1411,
            "contentWidth": 980,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 19,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": false,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ranges": "bytes",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "max-age=15, s-maxage=15, public",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef640871de78e7c-DFW",
            "content-disposition": "inline; filename=\"feed.xml\"",
            "content-encoding": "gzip",
            "content-length": "2056",
            "content-security-policy": "default-src 'self' *.miraheze.org *.wikitide.org *.wikitide.net;  script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.wikitide.org *.wikitide.net ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net www.gstatic.cn hcaptcha.com *.hcaptcha.com challenges.cloudflare.com;  style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.wikitide.org *.wikitide.net www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net cdnjs.cloudflare.com hcaptcha.com *.hcaptcha.com;  img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.wikitide.org *.wikitide.net;  font-src 'self' data: *.miraheze.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net;  media-src 'self' blob: *.miraheze.org *.wikitide.org *.wikitide.net upload.wikimedia.org;  frame-src 'self' *.miraheze.org *.wikitide.org *.wikitide.net archive.org;  connect-src 'self' blob: *.miraheze.org *.wikitide.org *.wikitide.net cdn.jsdelivr.net hcaptcha.com *.hcaptcha.com 1.1.1.1;",
            "content-type": "application/xml; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:36:00 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Mon, 20 Apr 2026 18:36:15 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "vary": "Accept-Encoding, Cookie, Authorization, Treat-as-Untrusted",
            "x-cache": "cp171 hit/1",
            "x-cache-status": "hit-remote",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-robots-tag": "noindex",
            "x-served-by": "mw192.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/w/api.php?action=feedrecentchanges&days=7&feedformat=atom&hidebots=1&limit=50&urlversion=1"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Enable Strict-Transport-Security",
            "urgency": "medium",
            "detail": "Set a Strict-Transport-Security header to enforce HTTPS on repeat visits."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 60,
        "urgency": "high",
        "data": {
          "hasPrintStyles": false,
          "hasReducedMotion": false,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "\"Times New Roman\"",
            "usesSystemFont": false
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": false
          }
        },
        "recommendations": [
          {
            "guideline": "17.1",
            "title": "Missing print style sheet",
            "urgency": "low",
            "detail": "Add a @media print stylesheet to ensure the page is optimized for paper-saving printing.",
            "wsid": "17.printed documents",
            "assessor": "script",
            "example": "@media print {\n  /* Hide non-critical navigation and backgrounds */\n  nav, .ads, header, footer { display: none; }\n  body { font-size: 12pt; color: #000; background: #fff; }\n  a::after { content: \" (\" attr(href) \") \"; } /* Show URLs */\n}"
          },
          {
            "guideline": "12.3",
            "title": "No reduced motion support",
            "urgency": "low",
            "detail": "Implement prefers-reduced-motion to allow users to disable animations, reducing compute and improving accessibility.",
            "wsid": "12.control animation",
            "assessor": "script",
            "example": "@media (prefers-reduced-motion: reduce) {\n  *, ::before, ::after {\n    animation-duration: 0.01ms !important;\n    animation-iteration-count: 1 !important;\n    transition-duration: 0.01ms !important;\n    scroll-behavior: auto !important;\n  }\n}"
          },
          {
            "guideline": "13.1",
            "title": "Missing system font fallback",
            "urgency": "medium",
            "detail": "Primary font \"\"Times New Roman\"\" does not appear to use a system font stack fallback. System fonts reduce network requests and improve rendering performance.",
            "wsid": "13.pre-installed typefaces",
            "assessor": "script",
            "example": "body {\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\";\n}"
          },
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "3.7",
            "title": "Missing main content landmark",
            "urgency": "medium",
            "detail": "No <main> or role=\"main\" tags found. Semantic HTML reduces code bloat and allows both assistive technology and web crawlers to parse content more efficiently.",
            "wsid": "3.ensure code follows good semantic practices",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-code-follows-good-semantic-practices",
            "assessor": "script",
            "example": "<main>\n  <article>\n    <h1>Page Title</h1>\n    <p>Content goes here.</p>\n  </article>\n</main>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 6171
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 6.03 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 6.03 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 567691,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 567691,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 72584,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6405f1b8e8e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17722,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17722,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 567691,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 26,
        "urgency": "medium",
        "totalTransferBytes": 567691,
        "heavyRequestCount": 2,
        "heavyBytes": 346425,
        "heavyRatio": 0.610235145528113,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef640615d0e2b13/rpYkAL0ZeHrfxtAcD2sDq65i7PfVHMIYLxRGOqdPFvk-1776710154-1.2.1.1-f4kypoK6krBIvOyl5zHOhdIiKml_f_6mArsLGjFEjt8yytRe04HvipPCQKJL68IF",
            "transferSize": 273841,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          },
          {
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6405f1b8e8e7c",
            "transferSize": 72584,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "ufo50.miraheze.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 273841
          },
          {
            "resourceType": "script",
            "count": 1,
            "transferBytes": 72584
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 273841
          },
          {
            "domain": "ufo50.miraheze.org",
            "count": 1,
            "transferBytes": 72584
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 273841,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef640615d0e2b13/rpYkAL0ZeHrfxtAcD2sDq65i7PfVHMIYLxRGOqdPFvk-1776710154-1.2.1.1-f4kypoK6krBIvOyl5zHOhdIiKml_f_6mArsLGjFEjt8yytRe04HvipPCQKJL68IF",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from ufo50.miraheze.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 72584,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6405f1b8e8e7c",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/auth.miraheze.org",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/auth.miraheze.org",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 526571,
      "co2Grams": 0.2017195558794,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Auth.miraheze.org - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "",
          "robots": "noindex,nofollow,max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Auth.miraheze.org",
          "ogTitle": "Auth.miraheze.org - UFO 50 Wiki",
          "ogDescription": "",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Auth.miraheze.org",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 17,
          "tabletSmallTapTargets": 17,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 22,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 17,
            "oversizedMedia": 0,
            "gridContainersDetected": 11,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 17,
            "oversizedMedia": 0,
            "gridContainersDetected": 11,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 17 small targets on mobile and 17 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "age": "254",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef640d859d78e7c-DFW",
            "content-encoding": "gzip",
            "content-language": "en",
            "content-length": "7893",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:36:13 GMT",
            "expect-ct": "max-age=86400, enforce",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp171 hit/8",
            "x-cache-status": "hit-remote",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw171.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Auth.miraheze.org"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 1
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 2382
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 2.33 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 2.33 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 526571,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 526571,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 69629,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef640a65c728e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17729,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 526571,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 21,
        "urgency": "medium",
        "totalTransferBytes": 526571,
        "heavyRequestCount": 1,
        "heavyBytes": 264658,
        "heavyRatio": 0.5026064861148829,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef640a88c992b13/_VAZxOxPuHlf8trI1xN1dQDWjvXH0xtHXjFtJhdx4Eo-1776710165-1.2.1.1-cryAHQosj_XaxlNCUoF63yrRiaUC5_GfJwlI5ZowcLQFj63d93EASsalv1HdQ3zB",
            "transferSize": 264658,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 264658
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 264658
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 264658,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef640a88c992b13/_VAZxOxPuHlf8trI1xN1dQDWjvXH0xtHXjFtJhdx4Eo-1776710165-1.2.1.1-cryAHQosj_XaxlNCUoF63yrRiaUC5_GfJwlI5ZowcLQFj63d93EASsalv1HdQ3zB",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Special:Random",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Special:Random",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 554062,
      "co2Grams": 0.21225084664680002,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Mini & Max - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "Mini & Max is the 45th game in UFO 50, the fifth game directed by KC Levin, and the first game to credit as many as four graphical designers: Shayn North, Lanila...",
          "robots": "max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Mini_%26_Max",
          "ogTitle": "Mini & Max - UFO 50 Wiki",
          "ogDescription": "Mini & Max is the 45th game in UFO 50, the fifth game directed by KC Levin, and the first game to credit as many as four graphical designers: Shayn North, Lanila...",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Mini_%26_Max",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Metadata structure looks healthy",
            "urgency": "low",
            "detail": "Core machine-readable metadata is present and no structural issues were detected."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 59,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 27,
          "tabletSmallTapTargets": 83,
          "fixedWidthOffenders": 14,
          "oversizedMedia": 1,
          "gridContainersDetected": 26,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 8,
            "smallTapTargets": 27,
            "oversizedMedia": 1,
            "gridContainersDetected": 13,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 6,
            "smallTapTargets": 83,
            "oversizedMedia": 0,
            "gridContainersDetected": 13,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 27 small targets on mobile and 83 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "high",
            "detail": "14 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          },
          {
            "title": "Constrain media dimensions",
            "urgency": "medium",
            "detail": "1 media element(s) exceeded viewport width. Apply max-width: 100% and responsive media patterns."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "accept-ranges": "bytes",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef6412b3bcf8e7c-DFW",
            "content-encoding": "gzip",
            "content-language": "en",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:36:27 GMT",
            "expect-ct": "max-age=86400, enforce",
            "last-modified": "Wed, 15 Apr 2026 18:36:26 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp191 miss",
            "x-cache-status": "miss",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw191.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Wikipages_most_in_need_of_work"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 22,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 36,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 31
        },
        "recommendations": [
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "high",
            "detail": "31 of 36 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 189,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/189 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 2691
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 2.63 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 2.63 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 554062,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 554062,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 70150,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef640f6daaf8e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17729,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 554062,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 22,
        "urgency": "medium",
        "totalTransferBytes": 554062,
        "heavyRequestCount": 1,
        "heavyBytes": 289464,
        "heavyRatio": 0.5224397269619645,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef640f90d452b13/sG3ttpovPPQ6u_7cCDWyiU5gEjXl6xecP7oX6jKeIPs-1776710178-1.2.1.1-yjVHQU95k_X8rGhM3ZgjAX8O06bmePd6MbgQAm8Uz4taTtFD07zlhztM83mo5MxL",
            "transferSize": 289464,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 289464
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 289464
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 289464,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef640f90d452b13/sG3ttpovPPQ6u_7cCDWyiU5gEjXl6xecP7oX6jKeIPs-1776710178-1.2.1.1-yjVHQU95k_X8rGhM3ZgjAX8O06bmePd6MbgQAm8Uz4taTtFD07zlhztM83mo5MxL",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Special:RecentChanges",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Special:RecentChanges",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 552702,
      "co2Grams": 0.21172985594280003,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 53.333333333333336,
        "urgency": "medium",
        "pageElementOccurrences": 6,
        "uniqueElementsAssessed": 6,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          },
          {
            "signature": "form|get|/w/index.php|select|select|namespace|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "select",
            "fieldName": "namespace",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|get|/w/index.php|input|checkbox|invert|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "checkbox",
            "fieldName": "invert",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|get|/w/index.php|input|checkbox|associated|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "checkbox",
            "fieldName": "associated",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|get|/w/index.php|input|text|tagfilter|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "tagfilter",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|get|/w/index.php|input|checkbox|inverttags|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "checkbox",
            "fieldName": "inverttags",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "6 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "6 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "2 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Recent changes - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "",
          "robots": "noindex,nofollow,max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Special:RecentChanges",
          "ogTitle": "Recent changes - UFO 50 Wiki",
          "ogDescription": "",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Special:RecentChanges",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 45,
          "tabletSmallTapTargets": 45,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 22,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 45,
            "oversizedMedia": 0,
            "gridContainersDetected": 11,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 45,
            "oversizedMedia": 0,
            "gridContainersDetected": 11,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 45 small targets on mobile and 45 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "accept-ranges": "bytes",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef64176ce638e7c-DFW",
            "content-encoding": "gzip",
            "content-language": "en",
            "content-length": "12402",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:36:38 GMT",
            "expect-ct": "max-age=86400, enforce",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp171 hit/4",
            "x-cache-status": "hit-remote",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-robots-tag": "noindex",
            "x-served-by": "mw203.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Special:RecentChanges"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 1
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 2091
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 2.04 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 2.04 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 552702,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 552702,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 72253,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6414ccaa98e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17729,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 552702,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 26,
        "urgency": "medium",
        "totalTransferBytes": 552702,
        "heavyRequestCount": 2,
        "heavyBytes": 338174,
        "heavyRatio": 0.6118559368339539,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef6414eee342b13/9PnTsycN7vY_q1unb2QXTMoNgtDGnm..TP7QTem6k9M-1776710192-1.2.1.1-BRo0_JvG6ksXVvP4Nhh.6cIduVxA0g_L5Hdcj0kMcfWR.XXmpRLVZJazrhp1S_zU",
            "transferSize": 265921,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          },
          {
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6414ccaa98e7c",
            "transferSize": 72253,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "ufo50.miraheze.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 265921
          },
          {
            "resourceType": "script",
            "count": 1,
            "transferBytes": 72253
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 265921
          },
          {
            "domain": "ufo50.miraheze.org",
            "count": 1,
            "transferBytes": 72253
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 265921,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef6414eee342b13/9PnTsycN7vY_q1unb2QXTMoNgtDGnm..TP7QTem6k9M-1776710192-1.2.1.1-BRo0_JvG6ksXVvP4Nhh.6cIduVxA0g_L5Hdcj0kMcfWR.XXmpRLVZJazrhp1S_zU",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from ufo50.miraheze.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 72253,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6414ccaa98e7c",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Special:SpecialPages",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Special:SpecialPages",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 566542,
      "co2Grams": 0.2170317025188,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17791,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 2,
        "uniqueElementsAssessed": 2,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          },
          {
            "signature": "no-form|input|search|anonymous|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": null,
            "formContext": "no-form",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": false
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "2 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "2 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "2 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Special pages - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "",
          "robots": "noindex,nofollow,max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Special:SpecialPages",
          "ogTitle": "Special pages - UFO 50 Wiki",
          "ogDescription": "",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Special:SpecialPages",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 136,
          "tabletSmallTapTargets": 136,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 24,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 136,
            "oversizedMedia": 0,
            "gridContainersDetected": 12,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 136,
            "oversizedMedia": 0,
            "gridContainersDetected": 12,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 136 small targets on mobile and 136 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef641c388e28e7c-DFW",
            "content-encoding": "gzip",
            "content-language": "en",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:36:51 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp201 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-robots-tag": "noindex",
            "x-served-by": "mw201.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Special:SpecialPages"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 1
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 5026
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 4.91 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 4.91 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 566542,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 566542,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 72828,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef641912c3b8e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17791,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17791,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 566542,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 26,
        "urgency": "medium",
        "totalTransferBytes": 566542,
        "heavyRequestCount": 2,
        "heavyBytes": 340779,
        "heavyRatio": 0.6015070374305876,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef641935d332b13/uIbFcGxUyi6hj1ZDui_ySvYkjwXHDAfY2RyKhPnJ4dY-1776710203-1.2.1.1-eTnmPTfbHB0quNT_bTOIgl3xmQ8cojQXdtdgQeK26bbBjsTnS4DX_aP33fL9UAWO",
            "transferSize": 267951,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          },
          {
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef641912c3b8e7c",
            "transferSize": 72828,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "ufo50.miraheze.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 267951
          },
          {
            "resourceType": "script",
            "count": 1,
            "transferBytes": 72828
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 267951
          },
          {
            "domain": "ufo50.miraheze.org",
            "count": 1,
            "transferBytes": 72828
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 267951,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef641935d332b13/uIbFcGxUyi6hj1ZDui_ySvYkjwXHDAfY2RyKhPnJ4dY-1776710203-1.2.1.1-eTnmPTfbHB0quNT_bTOIgl3xmQ8cojQXdtdgQeK26bbBjsTnS4DX_aP33fL9UAWO",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from ufo50.miraheze.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 72828,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef641912c3b8e7c",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Special:UploadWizard",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Special:UploadWizard",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 550318,
      "co2Grams": 0.21081658988520005,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Login required - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "",
          "robots": "noindex,nofollow,max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Special:UploadWizard",
          "ogTitle": "Login required - UFO 50 Wiki",
          "ogDescription": "",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Special:UploadWizard",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 28,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 11,
          "tabletSmallTapTargets": 11,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 22,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 11,
            "oversizedMedia": 0,
            "gridContainersDetected": 11,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 11,
            "oversizedMedia": 0,
            "gridContainersDetected": 11,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 11 small targets on mobile and 11 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef64210afde8e7c-DFW",
            "content-encoding": "gzip",
            "content-language": "en",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:37:03 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp171 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-robots-tag": "noindex",
            "x-served-by": "mw203.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Special:UploadWizard"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 1
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 208
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 208.00 B)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 208.00 B)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 550318,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 550318,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 70856,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef641e379e38e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17729,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 550318,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 22,
        "urgency": "medium",
        "totalTransferBytes": 550318,
        "heavyRequestCount": 1,
        "heavyBytes": 289577,
        "heavyRatio": 0.5261993974392988,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef641e5aa252b13/k8sbj2.LkA7KLL4TAh8iOCG2mL_37iLxBMBoP3sngO8-1776710216-1.2.1.1-EIYk9uZ_wCwRI8gQhhvjI5t3jBOjbAlrg2HxlW0GeGSfQuFFSECKzcYYnDqb48dR",
            "transferSize": 289577,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 289577
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 289577
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 289577,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef641e5aa252b13/k8sbj2.LkA7KLL4TAh8iOCG2mL_37iLxBMBoP3sngO8-1776710216-1.2.1.1-EIYk9uZ_wCwRI8gQhhvjI5t3jBOjbAlrg2HxlW0GeGSfQuFFSECKzcYYnDqb48dR",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Special:MyTalk",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Special:MyTalk",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 547521,
      "co2Grams": 0.20974511120940006,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "User talk:172.215.210.53 - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "",
          "robots": "noindex,nofollow,max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/User_talk:172.215.210.53",
          "ogTitle": "User talk:172.215.210.53 - UFO 50 Wiki",
          "ogDescription": "",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/User_talk:172.215.210.53",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 17,
          "tabletSmallTapTargets": 17,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 22,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 17,
            "oversizedMedia": 0,
            "gridContainersDetected": 11,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 17,
            "oversizedMedia": 0,
            "gridContainersDetected": 11,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 17 small targets on mobile and 17 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef6425d7e1b8e7c-DFW",
            "content-encoding": "gzip",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:37:15 GMT",
            "expect-ct": "max-age=86400, enforce",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding",
            "x-cache": "cp191 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-robots-tag": "noindex",
            "x-served-by": "mw161.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Special:MyTalk"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 1
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 3163
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 3.09 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 3.09 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 547521,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 547521,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 72302,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6423069fd8e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17729,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 547521,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 27,
        "urgency": "medium",
        "totalTransferBytes": 547521,
        "heavyRequestCount": 2,
        "heavyBytes": 347485,
        "heavyRatio": 0.6346514562911743,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef6423299b12b13/YX7UjHyKQtoPUjl5JE4ePkL6ZWG6m297KWebmlKIGVw-1776710228-1.2.1.1-8zZ3cayACcdKz4oYfjghBhSTaGxSmgIavfM9kUM_epfL6pgrID.75Aa21Js9bt3A",
            "transferSize": 275183,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          },
          {
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6423069fd8e7c",
            "transferSize": 72302,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "ufo50.miraheze.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 275183
          },
          {
            "resourceType": "script",
            "count": 1,
            "transferBytes": 72302
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 275183
          },
          {
            "domain": "ufo50.miraheze.org",
            "count": 1,
            "transferBytes": 72302
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 275183,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef6423299b12b13/YX7UjHyKQtoPUjl5JE4ePkL6ZWG6m297KWebmlKIGVw-1776710228-1.2.1.1-8zZ3cayACcdKz4oYfjghBhSTaGxSmgIavfM9kUM_epfL6pgrID.75Aa21Js9bt3A",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from ufo50.miraheze.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 72302,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6423069fd8e7c",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Special:MyContributions",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Special:MyContributions",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 49.166666666666664,
        "urgency": "medium",
        "pageElementOccurrences": 14,
        "uniqueElementsAssessed": 12,
        "reusedFromCacheCount": 3,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          },
          {
            "signature": "form|get|/w/index.php|input|text|target|no-autocomplete|required|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "target",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 30,
              "urgency": "medium",
              "issues": [
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|get|/w/index.php|select|select|namespace|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "select",
            "fieldName": "namespace",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": true
          },
          {
            "signature": "form|get|/w/index.php|input|checkbox|wpfilters[]|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "checkbox",
            "fieldName": "wpfilters[]",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|get|/w/index.php|input|text|tagfilter|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "tagfilter",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          },
          {
            "signature": "form|get|/w/index.php|input|checkbox|taginvert|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "checkbox",
            "fieldName": "taginvert",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|get|/w/index.php|input|checkbox|toponly|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "checkbox",
            "fieldName": "toponly",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|get|/w/index.php|input|checkbox|newonly|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "checkbox",
            "fieldName": "newonly",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|get|/w/index.php|input|checkbox|hideminor|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "checkbox",
            "fieldName": "hideminor",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|get|/w/index.php|input|date|start|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "date",
            "fieldName": "start",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 20,
              "urgency": "low",
              "issues": [
                "No error messaging hook"
              ],
              "recommendations": [
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|get|/w/index.php|input|text|anonymous|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": null,
            "formContext": "form|get|/w/index.php",
            "hasLabel": false,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 100,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|get|/w/index.php|input|date|end|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "date",
            "fieldName": "end",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 20,
              "urgency": "low",
              "issues": [
                "No error messaging hook"
              ],
              "recommendations": [
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          }
        ],
        "recommendations": [
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "12 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "9 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "4 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "User contributions for 172.215.210.53 - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "",
          "robots": "noindex,nofollow,max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Special:MyContributions",
          "ogTitle": "User contributions for 172.215.210.53 - UFO 50 Wiki",
          "ogDescription": "",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Special:Contributions/172.215.210.53",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 17,
          "tabletSmallTapTargets": 17,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 22,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 17,
            "oversizedMedia": 0,
            "gridContainersDetected": 11,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 17,
            "oversizedMedia": 0,
            "gridContainersDetected": 11,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 17 small targets on mobile and 17 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef6429e6d518e7c-DFW",
            "content-encoding": "gzip",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:37:26 GMT",
            "expect-ct": "max-age=86400, enforce",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding",
            "x-cache": "cp191 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-robots-tag": "noindex",
            "x-served-by": "mw153.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Special:MyContributions"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 1
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Special:CreateAccount?returnto=Main+Page",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Special:CreateAccount?returnto=Main+Page",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 564592,
      "co2Grams": 0.21628469378880003,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17788,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 31.666666666666668,
        "urgency": "medium",
        "pageElementOccurrences": 6,
        "uniqueElementsAssessed": 6,
        "reusedFromCacheCount": 0,
        "components": [
          {
            "signature": "form|get|/ufo50wiki/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/ufo50wiki/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|post|/ufo50wiki/wiki/special:createaccount?returnto=main+page&centralauthlogintoken=7fcb6cb00f353601e01e22943750d6e4&usesul3=1|input|text|wpname|username|required|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "wpname",
            "formContext": "form|post|/ufo50wiki/wiki/special:createaccount?returnto=main+page&centralauthlogintoken=7fcb6cb00f353601e01e22943750d6e4&usesul3=1",
            "hasLabel": true,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 20,
              "urgency": "low",
              "issues": [
                "No error messaging hook"
              ],
              "recommendations": [
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|post|/ufo50wiki/wiki/special:createaccount?returnto=main+page&centralauthlogintoken=7fcb6cb00f353601e01e22943750d6e4&usesul3=1|input|password|wppassword|new-password|required|no-pattern|no-minlength",
            "role": "form",
            "controlType": "password",
            "fieldName": "wppassword",
            "formContext": "form|post|/ufo50wiki/wiki/special:createaccount?returnto=main+page&centralauthlogintoken=7fcb6cb00f353601e01e22943750d6e4&usesul3=1",
            "hasLabel": true,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 20,
              "urgency": "low",
              "issues": [
                "No error messaging hook"
              ],
              "recommendations": [
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|post|/ufo50wiki/wiki/special:createaccount?returnto=main+page&centralauthlogintoken=7fcb6cb00f353601e01e22943750d6e4&usesul3=1|input|password|retype|new-password|required|no-pattern|no-minlength",
            "role": "form",
            "controlType": "password",
            "fieldName": "retype",
            "formContext": "form|post|/ufo50wiki/wiki/special:createaccount?returnto=main+page&centralauthlogintoken=7fcb6cb00f353601e01e22943750d6e4&usesul3=1",
            "hasLabel": true,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 20,
              "urgency": "low",
              "issues": [
                "No error messaging hook"
              ],
              "recommendations": [
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|post|/ufo50wiki/wiki/special:createaccount?returnto=main+page&centralauthlogintoken=7fcb6cb00f353601e01e22943750d6e4&usesul3=1|input|email|email|email|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "email",
            "fieldName": "email",
            "formContext": "form|post|/ufo50wiki/wiki/special:createaccount?returnto=main+page&centralauthlogintoken=7fcb6cb00f353601e01e22943750d6e4&usesul3=1",
            "hasLabel": true,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 20,
              "urgency": "low",
              "issues": [
                "No error messaging hook"
              ],
              "recommendations": [
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|post|/ufo50wiki/wiki/special:createaccount?returnto=main+page&centralauthlogintoken=7fcb6cb00f353601e01e22943750d6e4&usesul3=1|input|text|realname|name|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "realname",
            "formContext": "form|post|/ufo50wiki/wiki/special:createaccount?returnto=main+page&centralauthlogintoken=7fcb6cb00f353601e01e22943750d6e4&usesul3=1",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          }
        ],
        "recommendations": [
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "6 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "2 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Create account - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "",
          "robots": "noindex,nofollow,max-image-preview:standard",
          "canonical": "https://auth.miraheze.org/ufo50wiki/wiki/Special:CreateAccount?centralauthLoginToken=9896e31048654427d6d0fc55f7f88165&returnto=Main+Page&usesul3=1",
          "ogTitle": "Create account - UFO 50 Wiki",
          "ogDescription": "",
          "ogType": "website",
          "ogUrl": "https://auth.miraheze.org/ufo50wiki/wiki/Special:CreateAccount",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 12,
          "tabletSmallTapTargets": 12,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 26,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 12,
            "oversizedMedia": 0,
            "gridContainersDetected": 13,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 12,
            "oversizedMedia": 0,
            "gridContainersDetected": 13,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 12 small targets on mobile and 12 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 8,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA, Sec-CH-UA-Arch, Sec-CH-UA-Bitness, Sec-CH-UA-Form-Factor, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform, Sec-CH-UA-Platform-Version, Sec-CH-UA-WoW64",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "no-cache, no-store, max-age=0, must-revalidate",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef642fceb9e8e7c-DFW",
            "content-encoding": "br",
            "content-language": "en",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:37:41 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp201 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw161.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "auth.miraheze.org/ufo50wiki/wiki/Special:CreateAccount?centralauthLoginToken=a0ca3fb5853a35380f9cf4d3d0292916&returnto=Main+Page&usesul3=1"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 1
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 5,
            "totalIframes": 2,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 6450
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 6.30 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 6.30 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 564592,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 564592,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 72036,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef642bcebc98e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17788,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17788,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 564592,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 26,
        "urgency": "medium",
        "totalTransferBytes": 564592,
        "heavyRequestCount": 2,
        "heavyBytes": 341683,
        "heavyRatio": 0.6051856916144756,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef642bf3b742b13/R5Q8Hyuk9esLxrZgH.BOqNWdCQWYISOoknc1p0CXnUE-1776710251-1.2.1.1-Q6D7snD7Liwkml6Y4ATe_ZQPQQiAPnKOFUUfE4AroTrFDsH8ujtmCGUOL1727bQS",
            "transferSize": 269647,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          },
          {
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef642bcebc98e7c",
            "transferSize": 72036,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "ufo50.miraheze.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 269647
          },
          {
            "resourceType": "script",
            "count": 1,
            "transferBytes": 72036
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 269647
          },
          {
            "domain": "ufo50.miraheze.org",
            "count": 1,
            "transferBytes": 72036
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 269647,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef642bf3b742b13/R5Q8Hyuk9esLxrZgH.BOqNWdCQWYISOoknc1p0CXnUE-1776710251-1.2.1.1-Q6D7snD7Liwkml6Y4ATe_ZQPQQiAPnKOFUUfE4AroTrFDsH8ujtmCGUOL1727bQS",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from ufo50.miraheze.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 72036,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef642bcebc98e7c",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Special:UserLogin?returnto=Main+Page",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Special:UserLogin?returnto=Main+Page",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 531573,
      "co2Grams": 0.2036357290422,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 37.5,
        "urgency": "medium",
        "pageElementOccurrences": 4,
        "uniqueElementsAssessed": 4,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/ufo50wiki/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/ufo50wiki/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          },
          {
            "signature": "form|post|/ufo50wiki/wiki/special:userlogin?returnto=main+page&centralauthlogintoken=582d4e67881f287387be70cecf847348&usesul3=1|input|text|wpname|username|required|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "wpname",
            "formContext": "form|post|/ufo50wiki/wiki/special:userlogin?returnto=main+page&centralauthlogintoken=582d4e67881f287387be70cecf847348&usesul3=1",
            "hasLabel": true,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 20,
              "urgency": "low",
              "issues": [
                "No error messaging hook"
              ],
              "recommendations": [
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|post|/ufo50wiki/wiki/special:userlogin?returnto=main+page&centralauthlogintoken=582d4e67881f287387be70cecf847348&usesul3=1|input|password|wppassword|current-password|required|no-pattern|no-minlength",
            "role": "form",
            "controlType": "password",
            "fieldName": "wppassword",
            "formContext": "form|post|/ufo50wiki/wiki/special:userlogin?returnto=main+page&centralauthlogintoken=582d4e67881f287387be70cecf847348&usesul3=1",
            "hasLabel": true,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 20,
              "urgency": "low",
              "issues": [
                "No error messaging hook"
              ],
              "recommendations": [
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|post|/ufo50wiki/wiki/special:userlogin?returnto=main+page&centralauthlogintoken=582d4e67881f287387be70cecf847348&usesul3=1|input|checkbox|wpremember|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "checkbox",
            "fieldName": "wpremember",
            "formContext": "form|post|/ufo50wiki/wiki/special:userlogin?returnto=main+page&centralauthlogintoken=582d4e67881f287387be70cecf847348&usesul3=1",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          }
        ],
        "recommendations": [
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "4 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "2 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Log in - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "",
          "robots": "noindex,nofollow,max-image-preview:standard",
          "canonical": "https://auth.miraheze.org/ufo50wiki/wiki/Special:UserLogin?centralauthLoginToken=8ab2e55996c7512680d074014605fbd7&returnto=Main+Page&usesul3=1",
          "ogTitle": "Log in - UFO 50 Wiki",
          "ogDescription": "",
          "ogType": "website",
          "ogUrl": "https://auth.miraheze.org/ufo50wiki/wiki/Special:UserLogin",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 12,
          "tabletSmallTapTargets": 12,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 24,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 12,
            "oversizedMedia": 0,
            "gridContainersDetected": 12,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 12,
            "oversizedMedia": 0,
            "gridContainersDetected": 12,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 12 small targets on mobile and 12 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA, Sec-CH-UA-Arch, Sec-CH-UA-Bitness, Sec-CH-UA-Form-Factor, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform, Sec-CH-UA-Platform-Version, Sec-CH-UA-WoW64",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "no-cache, no-store, max-age=0, must-revalidate",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef64364ca508e7c-DFW",
            "content-encoding": "br",
            "content-language": "en",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:37:58 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp201 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw191.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "auth.miraheze.org/ufo50wiki/wiki/Special:UserLogin?centralauthLoginToken=0c98fdcfe27931df3c011d241a26d6d5&returnto=Main+Page&usesul3=1"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 1
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 2179
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 2.13 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 2.13 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 531573,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 531573,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 75044,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6432b5c7e8e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17729,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 531573,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 28,
        "urgency": "medium",
        "totalTransferBytes": 531573,
        "heavyRequestCount": 2,
        "heavyBytes": 339685,
        "heavyRatio": 0.6390185355539126,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef6432d9eba2b13/9X5ImriF9w.L2P6XoPELXyryJaau86_UEz7MhQ5fp2c-1776710269-1.2.1.1-Dfav5RENha6EIdFBYvgs9p9C5SNtU_IbR.7Wu5P9JQz9ESstq66owUDRobc4Iw8e",
            "transferSize": 264641,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          },
          {
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6432b5c7e8e7c",
            "transferSize": 75044,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "ufo50.miraheze.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 264641
          },
          {
            "resourceType": "script",
            "count": 1,
            "transferBytes": 75044
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 264641
          },
          {
            "domain": "ufo50.miraheze.org",
            "count": 1,
            "transferBytes": 75044
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 264641,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef6432d9eba2b13/9X5ImriF9w.L2P6XoPELXyryJaau86_UEz7MhQ5fp2c-1776710269-1.2.1.1-Dfav5RENha6EIdFBYvgs9p9C5SNtU_IbR.7Wu5P9JQz9ESstq66owUDRobc4Iw8e",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from ufo50.miraheze.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 75044,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6432b5c7e8e7c",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Main_Page?veaction=edit",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Main_Page?veaction=edit",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 571893,
      "co2Grams": 0.21908157109020002,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17788,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "",
          "robots": "noindex,nofollow,max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Main_Page",
          "ogTitle": "UFO 50 Wiki",
          "ogDescription": "",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Main_Page",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 57,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 159,
          "tabletSmallTapTargets": 159,
          "fixedWidthOffenders": 16,
          "oversizedMedia": 0,
          "gridContainersDetected": 24,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 10,
            "smallTapTargets": 159,
            "oversizedMedia": 0,
            "gridContainersDetected": 12,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 6,
            "smallTapTargets": 159,
            "oversizedMedia": 0,
            "gridContainersDetected": 12,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 159 small targets on mobile and 159 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "high",
            "detail": "16 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef643b73d7f8e7c-DFW",
            "content-encoding": "gzip",
            "content-language": "en",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:38:11 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "last-modified": "Wed, 15 Apr 2026 18:38:11 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp171 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw151.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Main_Page?veaction=edit"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 57,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 52
        },
        "recommendations": [
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "high",
            "detail": "52 of 57 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 489,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/489 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 7627
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 7.45 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 7.45 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 571893,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 571893,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 72878,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef643879ad58e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17788,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17788,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 571893,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 26,
        "urgency": "medium",
        "totalTransferBytes": 571893,
        "heavyRequestCount": 2,
        "heavyBytes": 348949,
        "heavyRatio": 0.6101648385274868,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef64389da0f2b13/oDVylrTKZKvrr26LRJYCNgHhaltN5BUeDOyviif.hww-1776710283-1.2.1.1-MMo6aPO5BpPgu0f_e9MhczjGEDFyQr_6XLtNb6sJMTRcZp9svf56LLqJ2OmKiPic",
            "transferSize": 276071,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          },
          {
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef643879ad58e7c",
            "transferSize": 72878,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "ufo50.miraheze.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 276071
          },
          {
            "resourceType": "script",
            "count": 1,
            "transferBytes": 72878
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 276071
          },
          {
            "domain": "ufo50.miraheze.org",
            "count": 1,
            "transferBytes": 72878
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 276071,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef64389da0f2b13/oDVylrTKZKvrr26LRJYCNgHhaltN5BUeDOyviif.hww-1776710283-1.2.1.1-MMo6aPO5BpPgu0f_e9MhczjGEDFyQr_6XLtNb6sJMTRcZp9svf56LLqJ2OmKiPic",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from ufo50.miraheze.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 72878,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef643879ad58e7c",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Main_Page?action=history",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Main_Page?action=history",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 561198,
      "co2Grams": 0.2149845155172,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 67.14285714285714,
        "urgency": "high",
        "pageElementOccurrences": 105,
        "uniqueElementsAssessed": 7,
        "reusedFromCacheCount": 4,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          },
          {
            "signature": "form|get|/w/index.php|input|date|date-range-to|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "date",
            "fieldName": "date-range-to",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 20,
              "urgency": "low",
              "issues": [
                "No error messaging hook"
              ],
              "recommendations": [
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|get|/w/index.php|input|text|anonymous|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": null,
            "formContext": "form|get|/w/index.php",
            "hasLabel": false,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 100,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          },
          {
            "signature": "form|get|/w/index.php|input|text|tagfilter|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "tagfilter",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          },
          {
            "signature": "form|get|/w/index.php|input|checkbox|taginvert|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "checkbox",
            "fieldName": "taginvert",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": true
          },
          {
            "signature": "form|get|/w/index.php|input|radio|oldid|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "radio",
            "fieldName": "oldid",
            "formContext": "form|get|/w/index.php",
            "hasLabel": false,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 90,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|get|/w/index.php|input|radio|diff|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "radio",
            "fieldName": "diff",
            "formContext": "form|get|/w/index.php",
            "hasLabel": false,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 90,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          }
        ],
        "recommendations": [
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "7 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "6 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "3 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "3 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Main Page: Revision history - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "",
          "robots": "noindex,nofollow,max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Main_Page?action=history",
          "ogTitle": "Main Page: Revision history - UFO 50 Wiki",
          "ogDescription": "",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Main_Page",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 548,
          "tabletSmallTapTargets": 548,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 24,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 548,
            "oversizedMedia": 0,
            "gridContainersDetected": 12,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 548,
            "oversizedMedia": 0,
            "gridContainersDetected": 12,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 548 small targets on mobile and 548 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef644157e1d8e7c-DFW",
            "content-encoding": "gzip",
            "content-language": "en",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:38:26 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "last-modified": "Wed, 15 Apr 2026 18:38:26 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp171 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw191.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Main_Page?action=history"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 1
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1211
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.18 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.18 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 561198,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 561198,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 73341,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef643ddec0c8e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17729,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 561198,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 26,
        "urgency": "medium",
        "totalTransferBytes": 561198,
        "heavyRequestCount": 2,
        "heavyBytes": 341050,
        "heavyRatio": 0.6077177751880798,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef643e02e7f2b13/DyT43l.ASn7Z2Mcy3i1PFe.NsEB.Bd2i7hT1pFLzOIg-1776710297-1.2.1.1-8rmDKWv617HCStb27GEKcCC5CGFPRZzUSSsguw.I.Xze1PWGDShXA4CHM8UpoEAH",
            "transferSize": 267709,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          },
          {
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef643ddec0c8e7c",
            "transferSize": 73341,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "ufo50.miraheze.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 267709
          },
          {
            "resourceType": "script",
            "count": 1,
            "transferBytes": 73341
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 267709
          },
          {
            "domain": "ufo50.miraheze.org",
            "count": 1,
            "transferBytes": 73341
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 267709,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef643e02e7f2b13/DyT43l.ASn7Z2Mcy3i1PFe.NsEB.Bd2i7hT1pFLzOIg-1776710297-1.2.1.1-8rmDKWv617HCStb27GEKcCC5CGFPRZzUSSsguw.I.Xze1PWGDShXA4CHM8UpoEAH",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from ufo50.miraheze.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 73341,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef643ddec0c8e7c",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Talk:Main_Page?action=edit&amp;redlink=1",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Talk:Main_Page?action=edit&amp;redlink=1",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 553112,
      "co2Grams": 0.21188691931680004,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 50,
        "urgency": "medium",
        "pageElementOccurrences": 4,
        "uniqueElementsAssessed": 4,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          },
          {
            "signature": "form|post|/wiki/talk:main_page?action=submit|input|text|wpantispam|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "wpantispam",
            "formContext": "form|post|/wiki/talk:main_page?action=submit",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|post|/wiki/talk:main_page?action=submit|textarea|textarea|wptextbox1|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "textarea",
            "fieldName": "wptextbox1",
            "formContext": "form|post|/wiki/talk:main_page?action=submit",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|post|/wiki/talk:main_page?action=submit|input|text|wpsummary|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "wpsummary",
            "formContext": "form|post|/wiki/talk:main_page?action=submit",
            "hasLabel": true,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 30,
              "urgency": "medium",
              "issues": [
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": false
          }
        ],
        "recommendations": [
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "4 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "3 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "3 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Creating Talk:Main Page - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "",
          "robots": "noindex,nofollow,max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Talk:Main_Page",
          "ogTitle": "Creating Talk:Main Page - UFO 50 Wiki",
          "ogDescription": "",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Talk:Main_Page",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 22,
          "tabletSmallTapTargets": 22,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 22,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 22,
            "oversizedMedia": 0,
            "gridContainersDetected": 11,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 22,
            "oversizedMedia": 0,
            "gridContainersDetected": 11,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 22 small targets on mobile and 22 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef6448ae8298e7c-DFW",
            "content-encoding": "gzip",
            "content-language": "en",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:38:45 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp191 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw202.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Talk:Main_Page?action=edit&amp;redlink=1"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 1
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 715
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 715.00 B)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 715.00 B)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 553112,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 553112,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 73321,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef64439bf048e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17729,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 553112,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 26,
        "urgency": "medium",
        "totalTransferBytes": 553112,
        "heavyRequestCount": 2,
        "heavyBytes": 337874,
        "heavyRatio": 0.6108600066532637,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef6443bed772b13/OyiDwJ1YupsHNx_.TcTWblsdxV19fWaHx1GTN74L.eE-1776710312-1.2.1.1-A8D74vZHEylt8u3jqC3.QQilGyAKRc.Zasi.eRPugED7rTaoDNTCRzSz7.nUScMw",
            "transferSize": 264553,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          },
          {
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef64439bf048e7c",
            "transferSize": 73321,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "ufo50.miraheze.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 264553
          },
          {
            "resourceType": "script",
            "count": 1,
            "transferBytes": 73321
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 264553
          },
          {
            "domain": "ufo50.miraheze.org",
            "count": 1,
            "transferBytes": 73321
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 264553,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef6443bed772b13/OyiDwJ1YupsHNx_.TcTWblsdxV19fWaHx1GTN74L.eE-1776710312-1.2.1.1-A8D74vZHEylt8u3jqC3.QQilGyAKRc.Zasi.eRPugED7rTaoDNTCRzSz7.nUScMw",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from ufo50.miraheze.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 73321,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef64439bf048e7c",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Main_Page?action=purge",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Main_Page?action=purge",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 565691,
      "co2Grams": 0.21670570024740002,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17722,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Main Page - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "",
          "robots": "noindex,nofollow,max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Main_Page",
          "ogTitle": "Main Page - UFO 50 Wiki",
          "ogDescription": "",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Main_Page",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 18,
          "tabletSmallTapTargets": 18,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 24,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 18,
            "oversizedMedia": 0,
            "gridContainersDetected": 12,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 18,
            "oversizedMedia": 0,
            "gridContainersDetected": 12,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 18 small targets on mobile and 18 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef644db3b558e7c-DFW",
            "content-encoding": "gzip",
            "content-language": "en",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:38:58 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp171 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw161.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Main_Page?action=purge"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 1
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1555
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.52 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.52 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 565691,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 565691,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 73432,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef644abdbd88e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17722,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17722,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 565691,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 27,
        "urgency": "medium",
        "totalTransferBytes": 565691,
        "heavyRequestCount": 2,
        "heavyBytes": 349091,
        "heavyRatio": 0.617105451562779,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef644ae0d652b13/eTvz.iKJFVKnYQ4a.PHubgO3Cz0vSjvSxVutEcR0Ibg-1776710330-1.2.1.1-a0.7QApavyjv9jpNH6bWtM08PzTFUBANCvZiJxinwDqmVFvKCexUoqcy7KMl1elV",
            "transferSize": 275659,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          },
          {
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef644abdbd88e7c",
            "transferSize": 73432,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "ufo50.miraheze.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 275659
          },
          {
            "resourceType": "script",
            "count": 1,
            "transferBytes": 73432
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 275659
          },
          {
            "domain": "ufo50.miraheze.org",
            "count": 1,
            "transferBytes": 73432
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 275659,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef644ae0d652b13/eTvz.iKJFVKnYQ4a.PHubgO3Cz0vSjvSxVutEcR0Ibg-1776710330-1.2.1.1-a0.7QApavyjv9jpNH6bWtM08PzTFUBANCvZiJxinwDqmVFvKCexUoqcy7KMl1elV",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from ufo50.miraheze.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 73432,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef644abdbd88e7c",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Special:WhatLinksHere/Main_Page",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Special:WhatLinksHere/Main_Page",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 550257,
      "co2Grams": 0.2107932219198,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 48.57142857142857,
        "urgency": "medium",
        "pageElementOccurrences": 7,
        "uniqueElementsAssessed": 7,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          },
          {
            "signature": "form|get|/wiki/special:whatlinkshere|input|text|target|no-autocomplete|required|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "target",
            "formContext": "form|get|/wiki/special:whatlinkshere",
            "hasLabel": true,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 30,
              "urgency": "medium",
              "issues": [
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|get|/wiki/special:whatlinkshere|select|select|namespace|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "select",
            "fieldName": "namespace",
            "formContext": "form|get|/wiki/special:whatlinkshere",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|get|/wiki/special:whatlinkshere|input|checkbox|invert|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "checkbox",
            "fieldName": "invert",
            "formContext": "form|get|/wiki/special:whatlinkshere",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|get|/wiki/special:whatlinkshere|input|checkbox|hidetrans|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "checkbox",
            "fieldName": "hidetrans",
            "formContext": "form|get|/wiki/special:whatlinkshere",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|get|/wiki/special:whatlinkshere|input|checkbox|hidelinks|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "checkbox",
            "fieldName": "hidelinks",
            "formContext": "form|get|/wiki/special:whatlinkshere",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          },
          {
            "signature": "form|get|/wiki/special:whatlinkshere|input|checkbox|hideredirs|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "checkbox",
            "fieldName": "hideredirs",
            "formContext": "form|get|/wiki/special:whatlinkshere",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": false
          }
        ],
        "recommendations": [
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "7 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "6 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "2 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Pages that link to \"Main Page\" - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "",
          "robots": "noindex,nofollow,max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Special:WhatLinksHere/Main_Page",
          "ogTitle": "Pages that link to \"Main Page\" - UFO 50 Wiki",
          "ogDescription": "",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Special:WhatLinksHere/Main_Page",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 282,
          "tabletSmallTapTargets": 282,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 22,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 282,
            "oversizedMedia": 0,
            "gridContainersDetected": 11,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 282,
            "oversizedMedia": 0,
            "gridContainersDetected": 11,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 282 small targets on mobile and 282 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "accept-ranges": "bytes",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef645317bcb8e7c-DFW",
            "content-encoding": "gzip",
            "content-language": "en",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:39:11 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp201 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-robots-tag": "noindex",
            "x-served-by": "mw151.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Special:WhatLinksHere/Main_Page"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 1
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1986
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.94 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.94 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 550257,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 550257,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 70364,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef644fa2d078e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17729,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 550257,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 20,
        "urgency": "medium",
        "totalTransferBytes": 550257,
        "heavyRequestCount": 1,
        "heavyBytes": 263238,
        "heavyRatio": 0.4783910063842895,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef644fc5d332b13/n2rReZ0IzVsZ6KBkQFfuAxmgKIH_MF.4n0DOpIe.Wzw-1776710343-1.2.1.1-2LomVujyAWChqvHzP83AqK_9JcP5FgEpgTy16GJbbc2oyPWollyVOZn_3DMaax7k",
            "transferSize": 263238,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 263238
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 263238
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 263238,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef644fc5d332b13/n2rReZ0IzVsZ6KBkQFfuAxmgKIH_MF.4n0DOpIe.Wzw-1776710343-1.2.1.1-2LomVujyAWChqvHzP83AqK_9JcP5FgEpgTy16GJbbc2oyPWollyVOZn_3DMaax7k",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Special:RecentChangesLinked/Main_Page",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Special:RecentChangesLinked/Main_Page",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 566434,
      "co2Grams": 0.21699032972760002,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef645793a6c8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:39:23 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef645793a6c8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 2286
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 2.23 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 2.23 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 566434,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 566434,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 72017,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef64552cc778e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17729,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 566434,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 27,
        "urgency": "medium",
        "totalTransferBytes": 566434,
        "heavyRequestCount": 2,
        "heavyBytes": 347498,
        "heavyRatio": 0.6134836538767093,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef64554fd912b13/o4z3FTuJB8jjqoYF5pX56dUxjX2pqXPOHEcvFafxhM0-1776710357-1.2.1.1-XJ6RIWQtQBFtWP1n9Nvd6dwGLVU5UDg2.Dgq19.9BwcXEA6BgC4eTuuWU0v4A7Cw",
            "transferSize": 275481,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          },
          {
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef64552cc778e7c",
            "transferSize": 72017,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "ufo50.miraheze.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 275481
          },
          {
            "resourceType": "script",
            "count": 1,
            "transferBytes": 72017
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 275481
          },
          {
            "domain": "ufo50.miraheze.org",
            "count": 1,
            "transferBytes": 72017
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 275481,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef64554fd912b13/o4z3FTuJB8jjqoYF5pX56dUxjX2pqXPOHEcvFafxhM0-1776710357-1.2.1.1-XJ6RIWQtQBFtWP1n9Nvd6dwGLVU5UDg2.Dgq19.9BwcXEA6BgC4eTuuWU0v4A7Cw",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from ufo50.miraheze.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 72017,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef64552cc778e7c",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Main_Page?oldid=6306",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Main_Page?oldid=6306",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "",
          "robots": "noindex,nofollow,max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Main_Page",
          "ogTitle": "UFO 50 Wiki",
          "ogDescription": "",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Main_Page",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 57,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 159,
          "tabletSmallTapTargets": 159,
          "fixedWidthOffenders": 16,
          "oversizedMedia": 0,
          "gridContainersDetected": 24,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 10,
            "smallTapTargets": 159,
            "oversizedMedia": 0,
            "gridContainersDetected": 12,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 6,
            "smallTapTargets": 159,
            "oversizedMedia": 0,
            "gridContainersDetected": 12,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 159 small targets on mobile and 159 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "high",
            "detail": "16 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef645b798c18e7c-DFW",
            "content-encoding": "gzip",
            "content-language": "en",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:39:33 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "last-modified": "Wed, 15 Apr 2026 18:39:33 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp171 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw201.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Main_Page?oldid=6306"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 57,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 52
        },
        "recommendations": [
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "high",
            "detail": "52 of 57 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 57,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/57 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Main_Page?action=info",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Main_Page?action=info",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 561008,
      "co2Grams": 0.2149117300512,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Information for \"Main Page\" - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "",
          "robots": "noindex,nofollow,max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Main_Page?action=info",
          "ogTitle": "Information for \"Main Page\" - UFO 50 Wiki",
          "ogDescription": "",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Main_Page",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 28,
          "tabletSmallTapTargets": 28,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 24,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 28,
            "oversizedMedia": 0,
            "gridContainersDetected": 12,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 28,
            "oversizedMedia": 0,
            "gridContainersDetected": 12,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 28 small targets on mobile and 28 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef6460a6bda8e7c-DFW",
            "content-encoding": "gzip",
            "content-language": "en",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:39:46 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp171 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw202.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Main_Page?action=info"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 1
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 9062
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 8.85 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 8.85 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 561008,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 561008,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 68990,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef645d8995c8e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17729,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 561008,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 22,
        "urgency": "medium",
        "totalTransferBytes": 561008,
        "heavyRequestCount": 1,
        "heavyBytes": 288476,
        "heavyRatio": 0.5142101360408408,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef645dacc122b13/VpnDt2vhrnB3K8cVz7A2QCVwKgRv_mtQDBN_jg60Vw0-1776710378-1.2.1.1-a.KRqT7r1St0Kd4bWwAOTok6_pX_eFflEuYQNaQmg__HiDw_pJbJJZEXN3dCsrrM",
            "transferSize": 288476,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 288476
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 288476
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 288476,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef645dacc122b13/VpnDt2vhrnB3K8cVz7A2QCVwKgRv_mtQDBN_jg60Vw0-1776710378-1.2.1.1-a.KRqT7r1St0Kd4bWwAOTok6_pX_eFflEuYQNaQmg__HiDw_pJbJJZEXN3dCsrrM",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Special:CiteThisPage?page=Main_Page&amp;id=6306&amp;wpFormIdentifier=titleform",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Special:CiteThisPage?page=Main_Page&amp;id=6306&amp;wpFormIdentifier=titleform",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 555270,
      "co2Grams": 0.21271360897799999,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 45,
        "urgency": "medium",
        "pageElementOccurrences": 2,
        "uniqueElementsAssessed": 2,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          },
          {
            "signature": "form|get|/wiki/special:citethispage|input|text|page|no-autocomplete|required|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "page",
            "formContext": "form|get|/wiki/special:citethispage",
            "hasLabel": true,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 30,
              "urgency": "medium",
              "issues": [
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": false
          }
        ],
        "recommendations": [
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "2 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "2 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Cite This Page - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "",
          "robots": "noindex,nofollow,max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Special:CiteThisPage?amp;id=6306&amp;wpFormIdentifier=titleform&page=Main_Page",
          "ogTitle": "Cite This Page - UFO 50 Wiki",
          "ogDescription": "",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Special:CiteThisPage",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 13,
          "tabletSmallTapTargets": 13,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 22,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 13,
            "oversizedMedia": 0,
            "gridContainersDetected": 11,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 13,
            "oversizedMedia": 0,
            "gridContainersDetected": 11,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 13 small targets on mobile and 13 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef6465a3b828e7c-DFW",
            "content-encoding": "gzip",
            "content-language": "en",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:39:59 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp201 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-robots-tag": "noindex",
            "x-served-by": "mw153.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Special:CiteThisPage?amp;id=6306&amp;wpFormIdentifier=titleform&page=Main_Page"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 1
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 458
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 458.00 B)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 458.00 B)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 555270,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 555270,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 72547,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6462aab598e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17729,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 555270,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 28,
        "urgency": "medium",
        "totalTransferBytes": 555270,
        "heavyRequestCount": 2,
        "heavyBytes": 359483,
        "heavyRatio": 0.6474021647126623,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef6462cfee12b13/24Pn.3r1YX44BBdUn1TL0nRUxGjMaZCNFzkMG08JQb4-1776710391-1.2.1.1-ZnpjQ0aOl_2GHWuGsDJBmaJSA.YksSYRB4egTNUc7RU8RdH1Vh52tOoU7SQpgKp7",
            "transferSize": 286936,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          },
          {
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6462aab598e7c",
            "transferSize": 72547,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "ufo50.miraheze.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 286936
          },
          {
            "resourceType": "script",
            "count": 1,
            "transferBytes": 72547
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 286936
          },
          {
            "domain": "ufo50.miraheze.org",
            "count": 1,
            "transferBytes": 72547
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 286936,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef6462cfee12b13/24Pn.3r1YX44BBdUn1TL0nRUxGjMaZCNFzkMG08JQb4-1776710391-1.2.1.1-ZnpjQ0aOl_2GHWuGsDJBmaJSA.YksSYRB4egTNUc7RU8RdH1Vh52tOoU7SQpgKp7",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from ufo50.miraheze.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 72547,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6462aab598e7c",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Special:UrlShortener?url=https%3A%2F%2Fufo50.miraheze.org%2Fwiki%2FMain_Page",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Special:UrlShortener?url=https%3A%2F%2Fufo50.miraheze.org%2Fwiki%2FMain_Page",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 566919,
      "co2Grams": 0.21717612420660004,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17688,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Permission error - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "",
          "robots": "noindex,nofollow,max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Special:UrlShortener?url=https%3A%2F%2Fufo50.miraheze.org%2Fwiki%2FMain_Page",
          "ogTitle": "Permission error - UFO 50 Wiki",
          "ogDescription": "",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Special:UrlShortener",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 28,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 11,
          "tabletSmallTapTargets": 11,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 22,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 11,
            "oversizedMedia": 0,
            "gridContainersDetected": 11,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 11,
            "oversizedMedia": 0,
            "gridContainersDetected": 11,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 11 small targets on mobile and 11 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef646a8d9068e7c-DFW",
            "content-encoding": "gzip",
            "content-language": "en",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:40:11 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp191 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-robots-tag": "noindex",
            "x-served-by": "mw162.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Special:UrlShortener?url=https%3A%2F%2Fufo50.miraheze.org%2Fwiki%2FMain_Page"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 1
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 4211
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 4.11 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 4.11 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 566919,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 566919,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 72067,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef64679cfcd8e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17688,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17688,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 566919,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 26,
        "urgency": "medium",
        "totalTransferBytes": 566919,
        "heavyRequestCount": 2,
        "heavyBytes": 346369,
        "heavyRatio": 0.6109673515969654,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef6467bfee92b13/89jLiqZgvU28bIhNt2C.g79pXTWXL.y70jKB41PwtSo-1776710404-1.2.1.1-Dtsca_N7jj29h03jlsYqycQK_AUH_PrAMDBvBRycVGVxXblvS5WeS5CwiMfgXiKU",
            "transferSize": 274302,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          },
          {
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef64679cfcd8e7c",
            "transferSize": 72067,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "ufo50.miraheze.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 274302
          },
          {
            "resourceType": "script",
            "count": 1,
            "transferBytes": 72067
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 274302
          },
          {
            "domain": "ufo50.miraheze.org",
            "count": 1,
            "transferBytes": 72067
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 274302,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef6467bfee92b13/89jLiqZgvU28bIhNt2C.g79pXTWXL.y70jKB41PwtSo-1776710404-1.2.1.1-Dtsca_N7jj29h03jlsYqycQK_AUH_PrAMDBvBRycVGVxXblvS5WeS5CwiMfgXiKU",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from ufo50.miraheze.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 72067,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef64679cfcd8e7c",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Main_Page?veaction=edit&amp;section=1",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Main_Page?veaction=edit&amp;section=1",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 549917,
      "co2Grams": 0.21066297424380004,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17788,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "",
          "robots": "noindex,nofollow,max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Main_Page",
          "ogTitle": "UFO 50 Wiki",
          "ogDescription": "",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Main_Page",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 57,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 159,
          "tabletSmallTapTargets": 159,
          "fixedWidthOffenders": 16,
          "oversizedMedia": 0,
          "gridContainersDetected": 24,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 10,
            "smallTapTargets": 159,
            "oversizedMedia": 0,
            "gridContainersDetected": 12,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 6,
            "smallTapTargets": 159,
            "oversizedMedia": 0,
            "gridContainersDetected": 12,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 159 small targets on mobile and 159 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "high",
            "detail": "16 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef646fac9fa8e7c-DFW",
            "date": "Mon, 20 Apr 2026 18:40:24 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "last-modified": "Wed, 15 Apr 2026 18:40:24 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp171 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw193.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Main_Page?amp;section=1&veaction=edit"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 57,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 52
        },
        "recommendations": [
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "high",
            "detail": "52 of 57 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 489,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/489 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 2315
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 2.26 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 2.26 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 549917,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 549917,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 71162,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef646c97cb08e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17788,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17788,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 549917,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 22,
        "urgency": "medium",
        "totalTransferBytes": 549917,
        "heavyRequestCount": 1,
        "heavyBytes": 287481,
        "heavyRatio": 0.5227716182623924,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef646cbca8e2b13/kQAIfCstMGssrgbIic7e.VHh4vjMbpitxhplnz_KRXg-1776710417-1.2.1.1-QgQZtLpvMfOCZtYJARNvwixjktyaz2mUXj6NBpwJOu8Z56MZOT6sra6rd8EuIG7U",
            "transferSize": 287481,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 287481
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 287481
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 287481,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef646cbca8e2b13/kQAIfCstMGssrgbIic7e.VHh4vjMbpitxhplnz_KRXg-1776710417-1.2.1.1-QgQZtLpvMfOCZtYJARNvwixjktyaz2mUXj6NBpwJOu8Z56MZOT6sra6rd8EuIG7U",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Main_Page?action=edit&amp;section=1",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Main_Page?action=edit&amp;section=1",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 538002,
      "co2Grams": 0.20609855936280005,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 50,
        "urgency": "medium",
        "pageElementOccurrences": 4,
        "uniqueElementsAssessed": 4,
        "reusedFromCacheCount": 4,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          },
          {
            "signature": "form|post|/wiki/main_page?action=submit|input|text|wpantispam|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "wpantispam",
            "formContext": "form|post|/wiki/main_page?action=submit",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          },
          {
            "signature": "form|post|/wiki/main_page?action=submit|textarea|textarea|wptextbox1|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "textarea",
            "fieldName": "wptextbox1",
            "formContext": "form|post|/wiki/main_page?action=submit",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": true
          },
          {
            "signature": "form|post|/wiki/main_page?action=submit|input|text|wpsummary|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "wpsummary",
            "formContext": "form|post|/wiki/main_page?action=submit",
            "hasLabel": true,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 30,
              "urgency": "medium",
              "issues": [
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "4 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "3 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "3 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Editing Main Page - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "",
          "robots": "noindex,nofollow,max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Main_Page",
          "ogTitle": "Editing Main Page - UFO 50 Wiki",
          "ogDescription": "",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Main_Page",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 25,
          "tabletSmallTapTargets": 24,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 24,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 25,
            "oversizedMedia": 0,
            "gridContainersDetected": 12,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 24,
            "oversizedMedia": 0,
            "gridContainersDetected": 12,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 25 small targets on mobile and 24 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef6474e1dc58e7c-DFW",
            "content-encoding": "gzip",
            "content-language": "en",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:40:38 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp171 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw171.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Main_Page?action=edit&amp;section=1"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 1
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 581
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 581.00 B)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 581.00 B)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 538002,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 538002,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 75959,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6471f1f768e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17729,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 538002,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 28,
        "urgency": "medium",
        "totalTransferBytes": 538002,
        "heavyRequestCount": 2,
        "heavyBytes": 344483,
        "heavyRatio": 0.6403005936780904,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef647214a9e2b13/rpagZCSpWypNmj1Zx9C8hH2QlwMLEDhvjEBNVU7Wf00-1776710430-1.2.1.1-.G8xsPzcUjO.mFMPRfFMr2V145JSTdIAR5__B.tmHwArj4pMiJsg9sCoVNjD0csL",
            "transferSize": 268524,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          },
          {
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6471f1f768e7c",
            "transferSize": 75959,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "ufo50.miraheze.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 268524
          },
          {
            "resourceType": "script",
            "count": 1,
            "transferBytes": 75959
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 268524
          },
          {
            "domain": "ufo50.miraheze.org",
            "count": 1,
            "transferBytes": 75959
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 268524,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef647214a9e2b13/rpagZCSpWypNmj1Zx9C8hH2QlwMLEDhvjEBNVU7Wf00-1776710430-1.2.1.1-.G8xsPzcUjO.mFMPRfFMr2V145JSTdIAR5__B.tmHwArj4pMiJsg9sCoVNjD0csL",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from ufo50.miraheze.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 75959,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6471f1f768e7c",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/UFO_Soft",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/UFO_Soft",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 565220,
      "co2Grams": 0.216525268908,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17788,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "UFO Soft - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "UFO Soft, formerly LX Systems, is the fictional company responsible for developing the games in UFO 50.",
          "robots": "max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/UFO_Soft",
          "ogTitle": "UFO Soft - UFO 50 Wiki",
          "ogDescription": "UFO Soft, formerly LX Systems, is the fictional company responsible for developing the games in UFO 50.",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/UFO_Soft",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Metadata structure looks healthy",
            "urgency": "low",
            "detail": "Core machine-readable metadata is present and no structural issues were detected."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 34,
          "tabletSmallTapTargets": 35,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 26,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 34,
            "oversizedMedia": 0,
            "gridContainersDetected": 13,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 35,
            "oversizedMedia": 0,
            "gridContainersDetected": 13,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 34 small targets on mobile and 35 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef6479b88f58e7c-DFW",
            "date": "Mon, 20 Apr 2026 18:40:50 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "last-modified": "Wed, 15 Apr 2026 18:40:50 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp171 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw172.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/UFO_Soft"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 10,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 5
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 10,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/10 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1971
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.92 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.92 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 565220,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 565220,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 72751,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6476dac0e8e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17788,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17788,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 565220,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 27,
        "urgency": "medium",
        "totalTransferBytes": 565220,
        "heavyRequestCount": 2,
        "heavyBytes": 348289,
        "heavyRatio": 0.6162007713810551,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef6476feeeb2b13/iL67AGeZlsTodjiJxhigBOC94_vVQCHJy_r96mvmnjo-1776710443-1.2.1.1-48ZlKaSbX6_zHGmw304_2G7rCzFH1bwKAzpPn2aQO1_fYwsz3ulEQhSjhAhz3X1W",
            "transferSize": 275538,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          },
          {
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6476dac0e8e7c",
            "transferSize": 72751,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "ufo50.miraheze.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 275538
          },
          {
            "resourceType": "script",
            "count": 1,
            "transferBytes": 72751
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 275538
          },
          {
            "domain": "ufo50.miraheze.org",
            "count": 1,
            "transferBytes": 72751
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 275538,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef6476feeeb2b13/iL67AGeZlsTodjiJxhigBOC94_vVQCHJy_r96mvmnjo-1776710443-1.2.1.1-48ZlKaSbX6_zHGmw304_2G7rCzFH1bwKAzpPn2aQO1_fYwsz3ulEQhSjhAhz3X1W",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from ufo50.miraheze.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 72751,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6476dac0e8e7c",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/UFO_50_Recovery_Team",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/UFO_50_Recovery_Team",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 550273,
      "co2Grams": 0.2107993512222,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17788,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "UFO 50 Recovery Team - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "The UFO 50 Recovery Team is the fictional group of archivists who discovered the UFO 50 collection, represented by the members of the real development team publishing...",
          "robots": "max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/UFO_50_Recovery_Team",
          "ogTitle": "UFO 50 Recovery Team - UFO 50 Wiki",
          "ogDescription": "The UFO 50 Recovery Team is the fictional group of archivists who discovered the UFO 50 collection, represented by the members of the real development team publishing...",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/UFO_50_Recovery_Team",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Metadata structure looks healthy",
            "urgency": "low",
            "detail": "Core machine-readable metadata is present and no structural issues were detected."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 42,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 114,
          "tabletSmallTapTargets": 114,
          "fixedWidthOffenders": 6,
          "oversizedMedia": 0,
          "gridContainersDetected": 26,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 3,
            "smallTapTargets": 114,
            "oversizedMedia": 0,
            "gridContainersDetected": 13,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 3,
            "smallTapTargets": 114,
            "oversizedMedia": 0,
            "gridContainersDetected": 13,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 114 small targets on mobile and 114 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "6 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef647e7edcc8e7c-DFW",
            "date": "Mon, 20 Apr 2026 18:41:02 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "last-modified": "Wed, 15 Apr 2026 18:41:02 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp171 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw153.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/UFO_50_Recovery_Team"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 13,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 18,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 13
        },
        "recommendations": [
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "high",
            "detail": "13 of 18 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 18,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/18 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 208
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 208.00 B)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 208.00 B)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 550273,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 550273,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 72810,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef647b9dfbc8e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17788,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17788,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 550273,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 28,
        "urgency": "medium",
        "totalTransferBytes": 550273,
        "heavyRequestCount": 2,
        "heavyBytes": 355374,
        "heavyRatio": 0.6458139868756054,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef647bc0c642b13/DwV3CmMOJ9CsjLJgzBcwaB4sbqrs_27FYfWHVKKxDVo-1776710455-1.2.1.1-IUYRkEytMTOCwhRlL.2f7.0yCoblXmmOsWSbQ6RI_J5et1AOjBgQ2P0dbp51zND8",
            "transferSize": 282564,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          },
          {
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef647b9dfbc8e7c",
            "transferSize": 72810,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "ufo50.miraheze.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 282564
          },
          {
            "resourceType": "script",
            "count": 1,
            "transferBytes": 72810
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 282564
          },
          {
            "domain": "ufo50.miraheze.org",
            "count": 1,
            "transferBytes": 72810
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 282564,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef647bc0c642b13/DwV3CmMOJ9CsjLJgzBcwaB4sbqrs_27FYfWHVKKxDVo-1776710455-1.2.1.1-IUYRkEytMTOCwhRlL.2f7.0yCoblXmmOsWSbQ6RI_J5et1AOjBgQ2P0dbp51zND8",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from ufo50.miraheze.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 72810,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef647b9dfbc8e7c",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Main_Page?veaction=edit&amp;section=2",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Main_Page?veaction=edit&amp;section=2",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 556204,
      "co2Grams": 0.21307140700560004,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "",
          "robots": "noindex,nofollow,max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Main_Page",
          "ogTitle": "UFO 50 Wiki",
          "ogDescription": "",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Main_Page",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 57,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 159,
          "tabletSmallTapTargets": 159,
          "fixedWidthOffenders": 16,
          "oversizedMedia": 0,
          "gridContainersDetected": 24,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 10,
            "smallTapTargets": 159,
            "oversizedMedia": 0,
            "gridContainersDetected": 12,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 6,
            "smallTapTargets": 159,
            "oversizedMedia": 0,
            "gridContainersDetected": 12,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 159 small targets on mobile and 159 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "high",
            "detail": "16 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef64836cf0a8e7c-DFW",
            "content-encoding": "gzip",
            "content-language": "en",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:41:15 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "last-modified": "Wed, 15 Apr 2026 18:41:15 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp171 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw181.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Main_Page?amp;section=2&veaction=edit"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 57,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 52
        },
        "recommendations": [
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "high",
            "detail": "52 of 57 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 489,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/489 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1755
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.71 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.71 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 556204,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 556204,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 74994,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef648070fdf8e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17729,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 556204,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 26,
        "urgency": "medium",
        "totalTransferBytes": 556204,
        "heavyRequestCount": 2,
        "heavyBytes": 340455,
        "heavyRatio": 0.6121045515674105,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef648093ac72b13/nGlwtkNRIXqX0twkrw4fT10JnAXrIjz8PlPy30Ef72Y-1776710468-1.2.1.1-phsq3s2f3aoAuPOPx0L0hJfVjbUy7uOe4I7X7eFL9.Z5u9iEnONBlyLYpPIPN8yp",
            "transferSize": 265461,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          },
          {
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef648070fdf8e7c",
            "transferSize": 74994,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "ufo50.miraheze.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 265461
          },
          {
            "resourceType": "script",
            "count": 1,
            "transferBytes": 74994
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 265461
          },
          {
            "domain": "ufo50.miraheze.org",
            "count": 1,
            "transferBytes": 74994
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 265461,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef648093ac72b13/nGlwtkNRIXqX0twkrw4fT10JnAXrIjz8PlPy30Ef72Y-1776710468-1.2.1.1-phsq3s2f3aoAuPOPx0L0hJfVjbUy7uOe4I7X7eFL9.Z5u9iEnONBlyLYpPIPN8yp",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from ufo50.miraheze.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 74994,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef648070fdf8e7c",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Main_Page?action=edit&amp;section=2",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Main_Page?action=edit&amp;section=2",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 530081,
      "co2Grams": 0.20306417159339998,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17722,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 50,
        "urgency": "medium",
        "pageElementOccurrences": 4,
        "uniqueElementsAssessed": 4,
        "reusedFromCacheCount": 4,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          },
          {
            "signature": "form|post|/wiki/main_page?action=submit|input|text|wpantispam|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "wpantispam",
            "formContext": "form|post|/wiki/main_page?action=submit",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          },
          {
            "signature": "form|post|/wiki/main_page?action=submit|textarea|textarea|wptextbox1|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "textarea",
            "fieldName": "wptextbox1",
            "formContext": "form|post|/wiki/main_page?action=submit",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": true,
            "assessment": {
              "score": 50,
              "urgency": "medium",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input."
              ]
            },
            "reusedFromCache": true
          },
          {
            "signature": "form|post|/wiki/main_page?action=submit|input|text|wpsummary|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "wpsummary",
            "formContext": "form|post|/wiki/main_page?action=submit",
            "hasLabel": true,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 30,
              "urgency": "medium",
              "issues": [
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "4 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "3 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "3 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Editing Main Page - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "",
          "robots": "noindex,nofollow,max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Main_Page",
          "ogTitle": "Editing Main Page - UFO 50 Wiki",
          "ogDescription": "",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Main_Page",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 24,
          "tabletSmallTapTargets": 24,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 24,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 24,
            "oversizedMedia": 0,
            "gridContainersDetected": 12,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 24,
            "oversizedMedia": 0,
            "gridContainersDetected": 12,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 24 small targets on mobile and 24 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef6488b1f9f8e7c-DFW",
            "content-encoding": "gzip",
            "content-language": "en",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:41:29 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp171 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw203.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Main_Page?action=edit&amp;section=2"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 6,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 1
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 6,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/6 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1291
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.26 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.26 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 530081,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 530081,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 70325,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6485b89db8e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17722,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17722,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 530081,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 21,
        "urgency": "medium",
        "totalTransferBytes": 530081,
        "heavyRequestCount": 1,
        "heavyBytes": 263339,
        "heavyRatio": 0.4967901132091133,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef6485dabf22b13/J0LNDoMV.LZvG8S9LRFBin_aDRSXbhioBdtEJ3HTjlo-1776710481-1.2.1.1-ShlHu4qcMsQ8hS7veNzQnKc.Mk1jwV9iZYQrTqzn2Fp_flvdcdf5zMnUcGIOCUY8",
            "transferSize": 263339,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 263339
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 263339
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 263339,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef6485dabf22b13/J0LNDoMV.LZvG8S9LRFBin_aDRSXbhioBdtEJ3HTjlo-1776710481-1.2.1.1-ShlHu4qcMsQ8hS7veNzQnKc.Mk1jwV9iZYQrTqzn2Fp_flvdcdf5zMnUcGIOCUY8",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Barbuta",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Barbuta",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 557286,
      "co2Grams": 0.21348590108040003,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17788,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Barbuta - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "Barbuta is the 1st game in UFO 50 and the first video game developed at LX Systems. It was developed by Thorson Petter without the knowledge of their co-workers...",
          "robots": "max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Barbuta",
          "ogTitle": "Barbuta - UFO 50 Wiki",
          "ogDescription": "Barbuta is the 1st game in UFO 50 and the first video game developed at LX Systems. It was developed by Thorson Petter without the knowledge of their co-workers...",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Barbuta",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Metadata structure looks healthy",
            "urgency": "low",
            "detail": "Core machine-readable metadata is present and no structural issues were detected."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 100,
          "tabletSmallTapTargets": 103,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 26,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 100,
            "oversizedMedia": 0,
            "gridContainersDetected": 13,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 103,
            "oversizedMedia": 0,
            "gridContainersDetected": 13,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 100 small targets on mobile and 103 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef648df0b1d8e7c-DFW",
            "content-encoding": "gzip",
            "content-language": "en",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:41:42 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "last-modified": "Wed, 15 Apr 2026 18:41:42 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp201 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw151.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Barbuta"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 27,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 98,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 93
        },
        "recommendations": [
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "high",
            "detail": "93 of 98 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 98,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/98 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 6774
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 6.62 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 6.62 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 557286,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 557286,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 69833,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef648aa8b3c8e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17788,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17788,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 557286,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 20,
        "urgency": "medium",
        "totalTransferBytes": 557286,
        "heavyRequestCount": 1,
        "heavyBytes": 264545,
        "heavyRatio": 0.4747023969739057,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef648acbb992b13/gIkPW2cyAErzphyIPxwGSeK5vE5uJ6Nqbr1Wov8XYvY-1776710494-1.2.1.1-5FUbZYBDR0T1wEdSDxbDhEx4jAic7fBGKhr5hy48RdxwY4lXgjQWLn22tzwPmWQs",
            "transferSize": 264545,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 264545
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 264545
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 264545,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef648acbb992b13/gIkPW2cyAErzphyIPxwGSeK5vE5uJ6Nqbr1Wov8XYvY-1776710494-1.2.1.1-5FUbZYBDR0T1wEdSDxbDhEx4jAic7fBGKhr5hy48RdxwY4lXgjQWLn22tzwPmWQs",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Bug_Hunter",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Bug_Hunter",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 540394,
      "co2Grams": 0.20701489007160007,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17788,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Bug Hunter - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "Bug Hunter is the 2nd game in UFO 50, and the first game created by the \"original trio\" of directors Benedikt Chun, Thorson Petter, and Gerry Smolski, who opted...",
          "robots": "max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Bug_Hunter",
          "ogTitle": "Bug Hunter - UFO 50 Wiki",
          "ogDescription": "Bug Hunter is the 2nd game in UFO 50, and the first game created by the \"original trio\" of directors Benedikt Chun, Thorson Petter, and Gerry Smolski, who opted...",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Bug_Hunter",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Metadata structure looks healthy",
            "urgency": "low",
            "detail": "Core machine-readable metadata is present and no structural issues were detected."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 52,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 76,
          "tabletSmallTapTargets": 79,
          "fixedWidthOffenders": 18,
          "oversizedMedia": 1,
          "gridContainersDetected": 26,
          "mobileGridOverflowContainers": 1,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 1,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 18,
            "smallTapTargets": 76,
            "oversizedMedia": 1,
            "gridContainersDetected": 13,
            "gridOverflowContainers": 1
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 79,
            "oversizedMedia": 0,
            "gridContainersDetected": 13,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 76 small targets on mobile and 79 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "high",
            "detail": "18 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          },
          {
            "title": "Constrain media dimensions",
            "urgency": "medium",
            "detail": "1 media element(s) exceeded viewport width. Apply max-width: 100% and responsive media patterns."
          },
          {
            "title": "Make grid layouts breakpoint-aware",
            "urgency": "medium",
            "detail": "1 grid container(s) overflowed across tested viewports (1 on mobile, 0 on tablet). Use intrinsic tracks (minmax(), fr), wrapping, and breakpoint-aware grid templates."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef649371c798e7c-DFW",
            "content-encoding": "gzip",
            "content-language": "en",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:41:56 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "last-modified": "Wed, 15 Apr 2026 18:41:56 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp171 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw161.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Bug_Hunter"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 28,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 144,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 139
        },
        "recommendations": [
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "high",
            "detail": "139 of 144 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 144,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/144 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 3090
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 3.02 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 3.02 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 540394,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 540394,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 70864,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6490208a38e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17788,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17788,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 540394,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 21,
        "urgency": "medium",
        "totalTransferBytes": 540394,
        "heavyRequestCount": 1,
        "heavyBytes": 276640,
        "heavyRatio": 0.5119227822662724,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef649043d7d2b13/1UyP.FVCyvym9MYlvACFFy6wap_ePDEYD6PCu.rMe8c-1776710508-1.2.1.1-ACEXH4pL49wdVzX4GC9m_AJDxCdb0xa.jpmWQr.6AVmXFX1r5V0EQfAMHg6GrlCq",
            "transferSize": 276640,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 276640
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 276640
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 276640,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef649043d7d2b13/1UyP.FVCyvym9MYlvACFFy6wap_ePDEYD6PCu.rMe8c-1776710508-1.2.1.1-ACEXH4pL49wdVzX4GC9m_AJDxCdb0xa.jpmWQr.6AVmXFX1r5V0EQfAMHg6GrlCq",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Ninpek",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Ninpek",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 556330,
      "co2Grams": 0.213119675262,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17722,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Ninpek - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "Ninpek is the 3rd game in UFO 50, and the second game created by the \"original trio\" of directors Benedikt Chun, Thorson Petter, and Gerry Smolski. It is the first...",
          "robots": "max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Ninpek",
          "ogTitle": "Ninpek - UFO 50 Wiki",
          "ogDescription": "Ninpek is the 3rd game in UFO 50, and the second game created by the \"original trio\" of directors Benedikt Chun, Thorson Petter, and Gerry Smolski. It is the first...",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Ninpek",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Metadata structure looks healthy",
            "urgency": "low",
            "detail": "Core machine-readable metadata is present and no structural issues were detected."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 79,
          "tabletSmallTapTargets": 83,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 26,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 79,
            "oversizedMedia": 0,
            "gridContainersDetected": 13,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 83,
            "oversizedMedia": 0,
            "gridContainersDetected": 13,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 79 small targets on mobile and 83 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef6498d59148e7c-DFW",
            "date": "Mon, 20 Apr 2026 18:42:10 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "last-modified": "Thu, 16 Apr 2026 07:18:28 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp171 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw181.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Ninpek"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 27,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 106,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 101
        },
        "recommendations": [
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "high",
            "detail": "101 of 106 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 106,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/106 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 3659
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 3.57 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 3.57 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 556330,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 556330,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 71741,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6495ca85b8e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17722,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17722,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 556330,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 26,
        "urgency": "medium",
        "totalTransferBytes": 556330,
        "heavyRequestCount": 2,
        "heavyBytes": 338422,
        "heavyRatio": 0.6083116136106268,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef6495eec682b13/_PXKxN1twz7_d0P9V0XYYMOA9KdX3CGw6ov_V4vdaCg-1776710522-1.2.1.1-HvuGsQkUi0S.U4Tq9uCtusEu6i7CvtN.TehR9URcxserOPVzUA201NoeRTdoOcdA",
            "transferSize": 266681,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          },
          {
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6495ca85b8e7c",
            "transferSize": 71741,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "ufo50.miraheze.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 266681
          },
          {
            "resourceType": "script",
            "count": 1,
            "transferBytes": 71741
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 266681
          },
          {
            "domain": "ufo50.miraheze.org",
            "count": 1,
            "transferBytes": 71741
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 266681,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef6495eec682b13/_PXKxN1twz7_d0P9V0XYYMOA9KdX3CGw6ov_V4vdaCg-1776710522-1.2.1.1-HvuGsQkUi0S.U4Tq9uCtusEu6i7CvtN.TehR9URcxserOPVzUA201NoeRTdoOcdA",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from ufo50.miraheze.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 71741,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef6495ca85b8e7c",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Paint_Chase",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Paint_Chase",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 556319,
      "co2Grams": 0.21311546136660003,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Paint Chase - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "Paint Chase is the 4th game in UFO 50, and the last game to be created by the \"original trio\" of directors Benedikt Chun, Thorson Petter, and Gerry Smolski; this...",
          "robots": "max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Paint_Chase",
          "ogTitle": "Paint Chase - UFO 50 Wiki",
          "ogDescription": "Paint Chase is the 4th game in UFO 50, and the last game to be created by the \"original trio\" of directors Benedikt Chun, Thorson Petter, and Gerry Smolski; this...",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Paint_Chase",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Metadata structure looks healthy",
            "urgency": "low",
            "detail": "Core machine-readable metadata is present and no structural issues were detected."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 53,
          "tabletSmallTapTargets": 56,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 26,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 53,
            "oversizedMedia": 0,
            "gridContainersDetected": 13,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 56,
            "oversizedMedia": 0,
            "gridContainersDetected": 13,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 53 small targets on mobile and 56 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef649e1ce608e7c-DFW",
            "date": "Mon, 20 Apr 2026 18:42:23 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "last-modified": "Wed, 15 Apr 2026 18:42:23 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp201 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw203.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Paint_Chase"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 27,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 88,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 83
        },
        "recommendations": [
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "high",
            "detail": "83 of 88 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 88,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/88 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1907
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.86 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.86 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 556319,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 556319,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 72229,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef649adeab08e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17729,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 556319,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 26,
        "urgency": "medium",
        "totalTransferBytes": 556319,
        "heavyRequestCount": 2,
        "heavyBytes": 337464,
        "heavyRatio": 0.6066016080701899,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef649b029d62b13/3ioet_5C0J_0DK.rmnv9t_8YefU.oaabSihZguObHDQ-1776710535-1.2.1.1-yZvE9jKHIbcKfGXkm7eR2CWfnJdwK1WzjhJx72ZZWcflkTXsfdqGw2zPg5kYYdqt",
            "transferSize": 265235,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          },
          {
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef649adeab08e7c",
            "transferSize": 72229,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "ufo50.miraheze.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 265235
          },
          {
            "resourceType": "script",
            "count": 1,
            "transferBytes": 72229
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 265235
          },
          {
            "domain": "ufo50.miraheze.org",
            "count": 1,
            "transferBytes": 72229
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 265235,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef649b029d62b13/3ioet_5C0J_0DK.rmnv9t_8YefU.oaabSihZguObHDQ-1776710535-1.2.1.1-yZvE9jKHIbcKfGXkm7eR2CWfnJdwK1WzjhJx72ZZWcflkTXsfdqGw2zPg5kYYdqt",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from ufo50.miraheze.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 72229,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef649adeab08e7c",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Magic_Garden",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Magic_Garden",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 553731,
      "co2Grams": 0.21212404670340002,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Magic Garden - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "Magic Garden is the 5th game in UFO 50, and the first game to include a proper credits sequence, likely for the purpose of crediting Meesha Danry's work on the newly...",
          "robots": "max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Magic_Garden",
          "ogTitle": "Magic Garden - UFO 50 Wiki",
          "ogDescription": "Magic Garden is the 5th game in UFO 50, and the first game to include a proper credits sequence, likely for the purpose of crediting Meesha Danry's work on the newly...",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Magic_Garden",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Metadata structure looks healthy",
            "urgency": "low",
            "detail": "Core machine-readable metadata is present and no structural issues were detected."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 42,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 65,
          "tabletSmallTapTargets": 65,
          "fixedWidthOffenders": 6,
          "oversizedMedia": 0,
          "gridContainersDetected": 26,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 6,
            "smallTapTargets": 65,
            "oversizedMedia": 0,
            "gridContainersDetected": 13,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 65,
            "oversizedMedia": 0,
            "gridContainersDetected": 13,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 65 small targets on mobile and 65 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "6 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef64a369d438e7c-DFW",
            "content-encoding": "gzip",
            "content-language": "en",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:42:37 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "last-modified": "Wed, 15 Apr 2026 18:42:37 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp191 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw161.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Magic_Garden"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 73,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 68
        },
        "recommendations": [
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "high",
            "detail": "68 of 73 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 73,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/73 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1643
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.60 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.60 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 553731,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 553731,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 71031,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef64a04d94e8e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17729,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 553731,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 20,
        "urgency": "medium",
        "totalTransferBytes": 553731,
        "heavyRequestCount": 1,
        "heavyBytes": 265985,
        "heavyRatio": 0.48035056733323583,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef64a0719a82b13/w2eo87f0Mmtf.9_5zaR18j.XTrkKDRMLAdPxwaEwivQ-1776710549-1.2.1.1-rJSe8J_lY_n3Uy7hvhSm34WF7wrYc02zzqSJu8RzMs7nTTNu3Z3u_AGIS.4qvxe7",
            "transferSize": 265985,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 265985
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 265985
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 265985,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef64a0719a82b13/w2eo87f0Mmtf.9_5zaR18j.XTrkKDRMLAdPxwaEwivQ-1776710549-1.2.1.1-rJSe8J_lY_n3Uy7hvhSm34WF7wrYc02zzqSJu8RzMs7nTTNu3Z3u_AGIS.4qvxe7",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Mortol",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Mortol",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 563714,
      "co2Grams": 0.21594834831960003,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17688,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Mortol - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "Mortol is the 6th game in UFO 50, and the first game to include a subordinate developer, Gregory Milk. It was directed by Gerry Smolski despite being conceived by...",
          "robots": "max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Mortol",
          "ogTitle": "Mortol - UFO 50 Wiki",
          "ogDescription": "Mortol is the 6th game in UFO 50, and the first game to include a subordinate developer, Gregory Milk. It was directed by Gerry Smolski despite being conceived by...",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Mortol",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Metadata structure looks healthy",
            "urgency": "low",
            "detail": "Core machine-readable metadata is present and no structural issues were detected."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 65,
          "tabletSmallTapTargets": 70,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 38,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 65,
            "oversizedMedia": 0,
            "gridContainersDetected": 19,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 70,
            "oversizedMedia": 0,
            "gridContainersDetected": 19,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 65 small targets on mobile and 70 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef64a8c5a6e8e7c-DFW",
            "content-encoding": "gzip",
            "content-language": "en",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:42:51 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "last-modified": "Wed, 15 Apr 2026 18:42:51 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp171 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw202.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Mortol"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 73,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 68
        },
        "recommendations": [
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "high",
            "detail": "68 of 73 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 73,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/73 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 842
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 842.00 B)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 842.00 B)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 563714,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 563714,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 72694,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef64a58ef8c8e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17688,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17688,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 563714,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 27,
        "urgency": "medium",
        "totalTransferBytes": 563714,
        "heavyRequestCount": 2,
        "heavyBytes": 348859,
        "heavyRatio": 0.6188581443781775,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef64a5b1ed72b13/axhUJfWDQPbMySdtTVj1JVMLSijyyKmHcX6vDijA5xE-1776710563-1.2.1.1-cf4IESMJnhZNvRMGk0e6g4WXW3FV8B3ud10c2FA.eKI5WimNdgZAAB395APzYuAN",
            "transferSize": 276165,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          },
          {
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef64a58ef8c8e7c",
            "transferSize": 72694,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "ufo50.miraheze.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 276165
          },
          {
            "resourceType": "script",
            "count": 1,
            "transferBytes": 72694
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 276165
          },
          {
            "domain": "ufo50.miraheze.org",
            "count": 1,
            "transferBytes": 72694
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 276165,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef64a5b1ed72b13/axhUJfWDQPbMySdtTVj1JVMLSijyyKmHcX6vDijA5xE-1776710563-1.2.1.1-cf4IESMJnhZNvRMGk0e6g4WXW3FV8B3ud10c2FA.eKI5WimNdgZAAB395APzYuAN",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from ufo50.miraheze.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 72694,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef64a58ef8c8e7c",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Velgress",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Velgress",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 566774,
      "co2Grams": 0.21712057740360002,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Velgress - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "Velgress is the 7th game in UFO 50, the second game officially directed by Benedikt Chun, and the first game to be developed by Chiffon Bola. It is the first game...",
          "robots": "max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Velgress",
          "ogTitle": "Velgress - UFO 50 Wiki",
          "ogDescription": "Velgress is the 7th game in UFO 50, the second game officially directed by Benedikt Chun, and the first game to be developed by Chiffon Bola. It is the first game...",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Velgress",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Metadata structure looks healthy",
            "urgency": "low",
            "detail": "Core machine-readable metadata is present and no structural issues were detected."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 74,
          "tabletSmallTapTargets": 77,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 26,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 74,
            "oversizedMedia": 0,
            "gridContainersDetected": 13,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 77,
            "oversizedMedia": 0,
            "gridContainersDetected": 13,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 74 small targets on mobile and 77 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 6,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "",
            "age": "0",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cache-control": "private, s-maxage=0, max-age=0, must-revalidate, no-transform",
            "cf-cache-status": "DYNAMIC",
            "cf-ray": "9ef64ae45fdc8e7c-DFW",
            "content-encoding": "gzip",
            "content-language": "en",
            "content-security-policy": "default-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net; script-src blob: 'self' 'unsafe-inline' 'unsafe-eval' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com www.google.com apis.google.com platform.twitter.com ajax.cloudflare.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net cdn.syndication.twimg.com openlayers.org www.gstatic.cn hcaptcha.com *.hcaptcha.com bandcamp.com flo.uri.sh challenges.cloudflare.com www.youtube.com; style-src 'self' data: 'unsafe-inline' miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net *.wikimedia.org *.wikipedia.org *.wikibooks.org *.wiktionary.org *.wikiquote.org *.wikisource.org *.wikiversity.org *.wikinews.org *.wikivoyage.org mediawiki.org *.mediawiki.org wikidata.org www.gstatic.com fonts.googleapis.com cdn.jsdelivr.net fastly.jsdelivr.net cdnjs.cloudflare.com platform.twitter.com ton.twimg.com hcaptcha.com *.hcaptcha.com use.typekit.net; img-src blob: 'self' data: miraheze.org wikitide.org *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org wikimedia.org maps.google.com www.gstatic.com maxcdn.bootstrapcdn.com *.twimg.com i.imgur.com image.tmdb.org *.googleusercontent.com *.fontawesome.com *.dropboxstatic.com *.redd.it *.redditmedia.com mirrors.creativecommons.org www.gnu.org live.staticflikr.com cdn.pixabay.com cdn.geogebra.org docs.blender.org *.imgbox.com tile.openstreetmap.org *.tile.openstreetmap.org cdn.discordapp.com na.llnet.sims3storee.cdn.ea.com *.fastly.net minotar.net db.onlinewebfonts.com openlayers.org discordapp.com imgbb.com postimages.org platform.twitter.com syndication.twitter.com img.newspapers.com cdn.smutstone.com storage.googleapis.com *.fbcdn.net i.ytimg.com *.imgbb.com simgbb.com *.simgbb.com ibb.co *.ibb.co *.postimages.org postimgs.org *.postimgs.org postimg.cc *.postimg.cc *.rbxcdn.com cms-imgp.jw-cdn.org hosted.weblate.org minecraft.wiki www.divine-pride.net static.divine-pride.net legacyofnightwind.com cdn.jsdelivr.net; font-src 'self' data: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net fonts.gstatic.com fonts.googleapis.com cdnjs.cloudflare.com cdn.jsdelivr.net fastly.jsdelivr.net db.onlinewebfonts.com upload.wikimedia.org use.typekit.net; media-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net upload.wikimedia.org embed.nicovideo.jp *.youtube.com *.youtube-nocookie.com player.twitch.tv clips.twitch.tv player.vimeo.com apis.google.com bandcamp.com cdn.jsdelivr.net; frame-src 'self' *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.google.com docs.google.com apis.google.com calendar.google.com drive.google.com web.libera.chat snap.berkeley.edu *.youtube-nocookie.com www.youtube.com player.twitch.tv platform.twitter.com discord.com discordapp.com embed.nicovideo.jp syndication.twitter.com open.spotify.com www.gofundme.com archive.org w.soundcloud.com query.wikidata.org player.vimeo.com www.bing.com lucid.app scratch.mit.edu hcaptcha.com *.hcaptcha.com bandcamp.com challenges.cloudflare.com map.showdown.wiki clips.twitch.tv video.fastly.steamstatic.com shared.fastly.steamstatic.com *.instatus.com; connect-src 'self' blob: *.miraheze.org *.mirabeta.org *.wikitide.org *.wikitide.net www.wikidata.org *.wikipedia.org www.mediawiki.org *.wikimedia.org *.wikinews.org *.wiktionary.org cdn.jsdelivr.net fastly.jsdelivr.net storage.googleapis.com *.youtube-nocookie.com hcaptcha.com *.hcaptcha.com 1.1.1.1 translate.googleapis.com games.roblox.com economy.roblox.com discord.com discordapp.com api.steampowered.com *.instatus.com",
            "content-type": "text/html; charset=UTF-8",
            "date": "Mon, 20 Apr 2026 18:43:05 GMT",
            "expect-ct": "max-age=86400, enforce",
            "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
            "last-modified": "Wed, 15 Apr 2026 18:43:05 GMT",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "cfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "Accept-Encoding, Cookie, Authorization",
            "x-cache": "cp191 pass",
            "x-cache-status": "pass",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-served-by": "mw161.fsslc.wtnet",
            "x-xss-protection": "1; mode=block",
            "xkey": "ufo50.miraheze.org/wiki/Velgress"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 25,
        "urgency": "low",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": true,
            "status": 200,
            "contentType": "image/png"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "low",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest."
          }
        ]
      },
      "mediaHints": {
        "score": 28,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 142,
          "imagesWithLazy": 5,
          "imagesWithoutLazy": 137
        },
        "recommendations": [
          {
            "title": "Add loading=\"lazy\" to images",
            "urgency": "high",
            "detail": "137 of 142 image(s) lack an explicit loading=\"lazy\" attribute. Lazy loading defers below-fold images and reduces initial page weight."
          }
        ]
      },
      "wsgCustom": {
        "score": 85,
        "urgency": "medium",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 142,
            "lazyImages": 5,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Roboto, Roboto-fallback, \"\", system-ui, -apple-system, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": true,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "11.3",
            "title": "Incomplete media lazy loading",
            "urgency": "medium",
            "detail": "Only 5/142 images use loading=\"lazy\". Global lazy loading reduces initial data transfer and energy consumption.",
            "wsid": "11.lazy loading",
            "assessor": "script",
            "example": "<img src=\"image.webp\" alt=\"Description\" loading=\"lazy\" width=\"800\" height=\"600\">\n<!-- Works for iframes too -->\n<iframe src=\"video.html\" loading=\"lazy\"></iframe>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1006
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1006.00 B)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1006.00 B)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 566774,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 566774,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 72345,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef64aafdf608e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17729,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 566774,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 26,
        "urgency": "medium",
        "totalTransferBytes": 566774,
        "heavyRequestCount": 2,
        "heavyBytes": 346933,
        "heavyRatio": 0.6121187633871702,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef64ab208252b13/oQY2w0BQw_NgwfhLhYpWd8M2kbYCBQ61Nc7PXcgjRg8-1776710576-1.2.1.1-3uP4FJo1I0aE.OxdoznTtoB_b6bHmPppRrKWvMXQ6HckplMhQAOq4Zfpl0McEdAl",
            "transferSize": 274588,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          },
          {
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef64aafdf608e7c",
            "transferSize": 72345,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "ufo50.miraheze.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 274588
          },
          {
            "resourceType": "script",
            "count": 1,
            "transferBytes": 72345
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 274588
          },
          {
            "domain": "ufo50.miraheze.org",
            "count": 1,
            "transferBytes": 72345
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 274588,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef64ab208252b13/oQY2w0BQw_NgwfhLhYpWd8M2kbYCBQ61Nc7PXcgjRg8-1776710576-1.2.1.1-3uP4FJo1I0aE.OxdoznTtoB_b6bHmPppRrKWvMXQ6HckplMhQAOq4Zfpl0McEdAl",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from ufo50.miraheze.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 72345,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef64aafdf608e7c",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Planet_Zoldath",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Planet_Zoldath",
      "performanceScore": null,
      "bestPracticesScore": 0.93,
      "transferBytes": 567917,
      "co2Grams": 0.21755843944380004,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 1,
          "greenCount": 2,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 60,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/w/index.php|input|search|search|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "search",
            "fieldName": "search",
            "formContext": "form|get|/w/index.php",
            "hasLabel": true,
            "hasValidationRule": false,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 60,
              "urgency": "high",
              "issues": [
                "No explicit validation rule",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Define validation constraints (required, pattern, min/max, or semantic input type).",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "No explicit validation rule",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": true,
          "hasTwitterCard": true,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Planet Zoldath - UFO 50 Wiki",
          "lang": "en",
          "charset": "UTF-8",
          "viewport": "width=device-width,initial-scale=1,viewport-fit=cover",
          "description": "Planet Zoldath is the 8th game in UFO 50, and the first game to be solely and definitively directed by Gerry Smolski. It is one of the few games to credit developers...",
          "robots": "max-image-preview:standard",
          "canonical": "https://ufo50.miraheze.org/wiki/Planet_Zoldath",
          "ogTitle": "Planet Zoldath - UFO 50 Wiki",
          "ogDescription": "Planet Zoldath is the 8th game in UFO 50, and the first game to be solely and definitively directed by Gerry Smolski. It is one of the few games to credit developers...",
          "ogType": "website",
          "ogUrl": "https://ufo50.miraheze.org/wiki/Planet_Zoldath",
          "twitterCard": "summary",
          "ldJsonCount": 1,
          "validLdJsonCount": 1,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Metadata structure looks healthy",
            "urgency": "low",
            "detail": "Core machine-readable metadata is present and no structural issues were detected."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 15,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 61,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 13,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 61,
            "oversizedMedia": 0,
            "gridContainersDetected": 13,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 61 small targets on mobile and 0 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef64b36ad1d8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:43:18 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef64b36ad1d8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 4142
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 4.04 KB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 4.04 KB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 567917,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 567917,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [
          {
            "title": "Evaluate deferred loading for heavy script from ufo50.miraheze.org",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 72610,
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef64b081db18e7c",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 5,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 17729,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "challenges.cloudflare.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 17729,
            "sampleUrl": "https://challenges.cloudflare.com/turnstile/v0/b/0b8fb825cb67/api.js?onload=cFRiY3&render=explicit",
            "greenCheck": {
              "hostname": "challenges.cloudflare.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:52:19",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/challenges.cloudflare.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 567917,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 26,
        "urgency": "medium",
        "totalTransferBytes": 567917,
        "heavyRequestCount": 2,
        "heavyBytes": 345918,
        "heavyRatio": 0.6090995691271788,
        "heavyRequests": [
          {
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef64b0a4a192b13/5dnbie5idqoYyTfFpcx982uQ6GLOWlGym_waBv5MZhs-1776710591-1.2.1.1-DaRmrG3JcsTOKNKBQ7nVg9sN7Wqw1ndCNMAbmDLEUyYoLeckUb5JaPhg.abL4WIV",
            "transferSize": 273308,
            "resourceType": "xhr",
            "mimeType": "text/plain",
            "domain": "challenges.cloudflare.com"
          },
          {
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef64b081db18e7c",
            "transferSize": 72610,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "ufo50.miraheze.org"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 273308
          },
          {
            "resourceType": "script",
            "count": 1,
            "transferBytes": 72610
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "challenges.cloudflare.com",
            "count": 1,
            "transferBytes": 273308
          },
          {
            "domain": "ufo50.miraheze.org",
            "count": 1,
            "transferBytes": 72610
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Modularize heavy xhr asset from challenges.cloudflare.com",
            "urgency": "high",
            "estimatedSavingsBytes": 273308,
            "strategy": "Move this asset behind an explicit interaction, route boundary, or lazy-loading trigger.",
            "url": "https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/flow/ov1/4117847002:1776708697:3kA8I6YecMXtdKlWqob_K5_xyjYqJo7MIatDwYODGdg/9ef64b0a4a192b13/5dnbie5idqoYyTfFpcx982uQ6GLOWlGym_waBv5MZhs-1776710591-1.2.1.1-DaRmrG3JcsTOKNKBQ7nVg9sN7Wqw1ndCNMAbmDLEUyYoLeckUb5JaPhg.abL4WIV",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from ufo50.miraheze.org",
            "urgency": "medium",
            "estimatedSavingsBytes": 72610,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://ufo50.miraheze.org/cdn-cgi/challenge-platform/h/b/orchestrate/chl_page/v1?ray=9ef64b081db18e7c",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Attactics",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Attactics",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef64b6c1d808e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:43:26 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef64b6c1d808e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Devilition",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Devilition",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef64b9ebb608e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:43:34 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef64b9ebb608e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Kick_Club",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Kick_Club",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef64bd4bbc88e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:43:43 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef64bd4bbc88e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Avianos",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Avianos",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef64c099d938e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:43:51 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef64c099d938e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Mooncat",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Mooncat",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef64c41aed98e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:44:00 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef64c41aed98e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Bushido_Ball",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Bushido_Ball",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef64c78cae48e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:44:09 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef64c78cae48e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Block_Koala",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Block_Koala",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef64caf6cfc8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:44:18 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef64caf6cfc8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Camouflage",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Camouflage",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef64ce57c358e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:44:27 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef64ce57c358e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Campanella",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Campanella",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef64d1bdaaf8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:44:35 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef64d1bdaaf8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Golfaria",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Golfaria",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef64d506fd38e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:44:44 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef64d506fd38e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/The_Big_Bell_Race",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/The_Big_Bell_Race",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef64d85fabb8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:44:52 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef64d85fabb8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Warptank",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Warptank",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef64dbeae648e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:45:01 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef64dbeae648e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Waldorf%27s_Journey",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Waldorf%27s_Journey",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef64df45dcc8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:45:10 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef64df45dcc8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Porgy",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Porgy",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef64e2b0a5c8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:45:19 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef64e2b0a5c8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Onion_Delivery",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Onion_Delivery",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef64e610c448e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:45:27 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef64e610c448e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Caramel_Caramel",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Caramel_Caramel",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef64e984dce8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:45:36 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef64e984dce8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Party_House",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Party_House",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef64ecf2cc38e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:45:45 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef64ecf2cc38e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Hot_Foot",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Hot_Foot",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef64f0018058e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:45:53 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef64f0018058e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Divers",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Divers",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef64f354b7c8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:46:01 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef64f354b7c8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Rail_Heist",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Rail_Heist",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef64f6718b68e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:46:09 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef64f6718b68e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Vainger",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Vainger",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef64f9d5e608e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:46:18 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef64f9d5e608e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Rock_On!_Island",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Rock_On!_Island",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef64fd289f48e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:46:26 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef64fd289f48e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Pingolf",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Pingolf",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef650082d728e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:46:35 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef650082d728e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Mortol_II",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Mortol_II",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef650369e618e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:46:42 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef650369e618e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Fist_Hell",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Fist_Hell",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef6506b8a158e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:46:51 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef6506b8a158e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Overbold",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Overbold",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef6509aba3e8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:46:59 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef6509aba3e8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Campanella_2",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Campanella_2",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef650cf78c38e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:47:07 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef650cf78c38e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Hyper_Contender",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Hyper_Contender",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef651230db68e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:47:20 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef651230db68e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Valbrace",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Valbrace",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef65159d80c8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:47:29 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef65159d80c8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Rakshasa",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Rakshasa",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef6518f3b2a8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:47:38 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef6518f3b2a8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Star_Waspir",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Star_Waspir",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef651c3bfbc8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:47:46 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef651c3bfbc8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Grimstone",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Grimstone",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef651f1ada68e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:47:53 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef651f1ada68e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Lords_of_Diskonia",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Lords_of_Diskonia",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef6522b9c288e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:48:03 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef6522b9c288e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Night_Manor",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Night_Manor",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef6525a6ad38e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:48:10 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef6525a6ad38e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Elfazar%27s_Hat",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Elfazar%27s_Hat",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef65296b9088e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:48:20 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef65296b9088e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Pilot_Quest",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Pilot_Quest",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef652cc4d088e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:48:28 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef652cc4d088e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Mini_%26_Max",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Mini_%26_Max",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef652fa88238e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:48:36 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef652fa88238e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Combatants",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Combatants",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef65330bf6f8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:48:44 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef65330bf6f8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Quibble_Race",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Quibble_Race",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef65366ad9d8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:48:53 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef65366ad9d8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Seaside_Drive",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Seaside_Drive",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef65399cf188e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:49:01 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef65399cf188e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Campanella_3",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Campanella_3",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef653cfce6a8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:49:10 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef653cfce6a8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Cyber_Owls",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Cyber_Owls",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef65406bc708e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:49:19 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef65406bc708e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/List_of_Games",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/List_of_Games",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef6543bcafb8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:49:27 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef6543bcafb8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Singleplayer",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Singleplayer",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef654709fd18e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:49:36 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef654709fd18e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Multiplayer",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Multiplayer",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef654a03eb68e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:49:43 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef654a03eb68e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Epic_Play",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Epic_Play",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef654d5fa2c8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:49:52 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef654d5fa2c8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Quick_Play",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Quick_Play",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef65504ff8c8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:49:59 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef65504ff8c8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Thinky_Play",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Thinky_Play",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef65538ba9b8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:50:08 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef65538ba9b8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Reflex_Play",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Reflex_Play",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef655703c9f8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:50:17 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef655703c9f8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Adventure",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Adventure",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef655a22d6a8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:50:25 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef655a22d6a8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/RPG",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/RPG",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef655d7afe88e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:50:33 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef655d7afe88e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Puzzle",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Puzzle",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef6560eaebe8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:50:42 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef6560eaebe8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Strategy",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Strategy",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef656451db38e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:50:51 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef656451db38e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Arcade",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Arcade",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef6567afa0c8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:50:59 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef6567afa0c8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Sport",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Sport",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef656afec148e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:51:08 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef656afec148e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Shooter",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Shooter",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef656e7a8f38e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:51:17 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef656e7a8f38e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Platform",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Platform",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef6571b5d6e8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:51:25 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef6571b5d6e8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://ufo50.miraheze.org/wiki/Simulation",
      "status": "ok",
      "finalUrl": "https://ufo50.miraheze.org/wiki/Simulation",
      "performanceScore": null,
      "bestPracticesScore": null,
      "transferBytes": 0,
      "co2Grams": 0,
      "greenWeb": {
        "page": {
          "hostname": "ufo50.miraheze.org",
          "checked": true,
          "status": "green",
          "green": true,
          "hostedBy": "Cloudflare",
          "hostedByWebsite": "https://www.cloudflare.com",
          "listedProvider": true,
          "partner": null,
          "modified": "2026-04-20T18:34:40",
          "supportingDocuments": [
            {
              "id": 18,
              "title": "Blog post - The Climate and Cloudflare",
              "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
            },
            {
              "id": 1264,
              "title": "Cloudflare 2023 Emissions Inventory",
              "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
            }
          ],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/ufo50.miraheze.org",
          "error": null
        },
        "externalAssets": [],
        "summary": {
          "pageStatus": "green",
          "externalOriginCount": 0,
          "greenCount": 1,
          "notGreenCount": 0,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 0,
        "urgency": "low",
        "pageElementOccurrences": 0,
        "uniqueElementsAssessed": 0,
        "reusedFromCacheCount": 0,
        "components": [],
        "recommendations": [
          {
            "title": "No major form validation risks detected",
            "urgency": "low",
            "detail": "Continue testing form flows to ensure error handling remains clear across templates."
          }
        ]
      },
      "metadata": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": true,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Checking your connection... | Miraheze",
          "lang": "en",
          "charset": "utf-8",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Our systems have detected unusual activity. Your connection is being securely checked.",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 0,
          "tabletSmallTapTargets": 0,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "gridContainersDetected": 0,
          "mobileGridOverflowContainers": 0,
          "tabletGridOverflowContainers": 0,
          "gridOverflowContainers": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 0,
            "oversizedMedia": 0,
            "gridContainersDetected": 0,
            "gridOverflowContainers": 0
          }
        ],
        "recommendations": [
          {
            "title": "Layout adaptation looks healthy",
            "urgency": "low",
            "detail": "No major mobile or tablet layout issues were detected in this sample."
          }
        ]
      },
      "securityLight": {
        "score": 4,
        "urgency": "low",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": true,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": true,
          "exposesServerFingerprint": true,
          "externalScriptCount": 0,
          "externalScriptsWithoutIntegrity": 0,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "accept-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "alt-svc": "h3=\":443\"; ma=86400",
            "cf-mitigated": "challenge",
            "cf-ray": "9ef65750584a8e7c-DFW",
            "content-encoding": "br",
            "content-security-policy": "default-src 'self' 'unsafe-inline' https://meta.miraheze.org; img-src https://meta.miraheze.org data:; style-src https://meta.miraheze.org 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://meta.miraheze.org https://challenges.cloudflare.com blob: 'self'; connect-src 'self'; frame-src 'self' https://challenges.cloudflare.com; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://meta.miraheze.org; base-uri 'none'",
            "content-type": "text/html; charset=UTF-8",
            "critical-ch": "Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA",
            "cross-origin-embedder-policy": "require-corp",
            "cross-origin-opener-policy": "same-origin",
            "cross-origin-resource-policy": "same-origin",
            "date": "Mon, 20 Apr 2026 18:51:33 GMT",
            "expect-ct": "max-age=86400, enforce",
            "origin-agent-cluster": "?1",
            "permissions-policy": "interest-cohort=(), browsing-topics=()",
            "priority": "u=0,i",
            "referrer-policy": "same-origin",
            "server": "cloudflare",
            "server-timing": "chlray;desc=\"9ef65750584a8e7c\"\ncfExtPri",
            "speculation-rules": "\"/cdn-cgi/speculation\"",
            "strict-transport-security": "max-age=31536000; includeSubDomains; preload",
            "vary": "accept-encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1; mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "No major lightweight security flags detected",
            "urgency": "low",
            "detail": "Keep dependencies and response headers reviewed regularly as part of release checks."
          }
        ]
      },
      "expectedFiles": {
        "score": 80,
        "urgency": "high",
        "origin": "https://ufo50.miraheze.org",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://ufo50.miraheze.org/robots.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/sitemap.xml",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/.well-known/security.txt",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/manifest.webmanifest",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://ufo50.miraheze.org/favicon.ico",
            "found": false,
            "status": 403,
            "contentType": "text/html; charset=UTF-8"
          }
        ],
        "recommendations": [
          {
            "title": "Add missing expected site files",
            "urgency": "high",
            "detail": "Missing expected file(s): /robots.txt."
          },
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /sitemap.xml, /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "mediaHints": {
        "score": 0,
        "urgency": "low",
        "checks": {
          "hasDarkMode": true,
          "hasMetaColorScheme": false,
          "hasDarkModeQuery": true,
          "autoplayingMedia": [],
          "autoplayCount": 0,
          "unmutedAutoplayCount": 0,
          "totalImages": 0,
          "imagesWithLazy": 0,
          "imagesWithoutLazy": 0
        },
        "recommendations": [
          {
            "title": "Media hints look healthy",
            "urgency": "low",
            "detail": "No major autoplay, dark mode, or lazy loading concerns were detected on this page."
          }
        ]
      },
      "wsgCustom": {
        "score": 90,
        "urgency": "low",
        "data": {
          "hasPrintStyles": true,
          "hasReducedMotion": true,
          "media": {
            "totalImages": 0,
            "lazyImages": 0,
            "totalIframes": 0,
            "lazyIframes": 0
          },
          "typography": {
            "primaryFont": "Outfit, sans-serif",
            "usesSystemFont": true
          },
          "tracking": {
            "count": 0,
            "scripts": []
          },
          "semantics": {
            "hasNavigation": false,
            "hasMainContent": true
          }
        },
        "recommendations": [
          {
            "guideline": "2.5",
            "title": "Missing explicit navigation structure",
            "urgency": "medium",
            "detail": "No <nav> or role=\"navigation\" tags found. Proper wayfinding helps users find content efficiently and reduces unnecessary page loads.",
            "wsid": "2.navigation wayfinding",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-navigation-and-wayfinding-are-well-structured",
            "assessor": "script",
            "example": "<nav aria-label=\"Primary\">\n  <ul>\n    <li><a href=\"/\">Home</a></li>\n  </ul>\n</nav>"
          },
          {
            "guideline": "2.4",
            "title": "Review User Journey Efficiency",
            "urgency": "investigate",
            "detail": "Have a human walk through the main user journeys and verify they require the fewest steps possible. Unnecessary steps waste user time and device energy. Look for redundant confirmations, forced account creation, and non-essential interstitials.",
            "wsid": "2.minimize non-essential content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#minimize-non-essential-content-interactivity-or-journeys",
            "assessor": "human"
          },
          {
            "guideline": "2.6",
            "title": "Check for Engagement Traps",
            "urgency": "investigate",
            "detail": "Manually review the page for patterns that artificially prolong engagement: infinite scroll, autoplay carousels, sticky overlays, and notification permission prompts. These waste user attention and device energy.",
            "wsid": "2.design to assist not distract",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#design-to-assist-and-not-to-distract",
            "assessor": "human"
          },
          {
            "guideline": "2.7",
            "title": "Audit for Deceptive Design Patterns",
            "urgency": "investigate",
            "detail": "Have a human identify dark patterns: misleading consent dialogs, hidden unsubscribe links, forced continuity, and bait-and-switch flows. Deceptive patterns waste user time and undermine trust.",
            "wsid": "2.avoid manipulative deceptive",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#avoid-being-manipulative-or-deceptive",
            "assessor": "human"
          },
          {
            "guideline": "2.14",
            "title": "Verify Accessible Alternatives for All Media",
            "urgency": "investigate",
            "detail": "Manually check that every video has captions, every audio file has a transcript, every image has meaningful alt text, and every PDF has an accessible HTML alternative. Alternatives let assistive technology users avoid re-downloading heavy formats.",
            "wsid": "2.offer suitable alternatives",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#offer-suitable-alternatives-for-every-format-used",
            "assessor": "human"
          },
          {
            "guideline": "2.18",
            "title": "Confirm User Research Was Conducted",
            "urgency": "investigate",
            "detail": "Verify that genuine user research or usability testing has informed the design. Research-driven design reduces wasted iterations, removes unnecessary features, and ensures the product meets real needs efficiently.",
            "wsid": "2.involve users early",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#involve-users-early-in-the-project",
            "assessor": "human"
          },
          {
            "guideline": "2.10",
            "title": "Review Content Conciseness",
            "urgency": "investigate",
            "detail": "Use a Large Language Model (e.g. locally or via API) to evaluate page text for conciseness and clarity. Removing superfluous text reduces payload, reading time, and inference energy for search engines indexing this content.",
            "wsid": "2.provide clear inclusive content",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#provide-clear-inclusive-content-with-purpose",
            "assessor": "ai"
          },
          {
            "guideline": "4.4",
            "title": "Verify Error Pages and Redirects Are Configured",
            "urgency": "investigate",
            "detail": "Have a human check that custom 404 and 500 error pages exist and that there are no redirect chains longer than one hop. Broken links force wasted round-trips. Redirect chains multiply transfer costs.",
            "wsid": "4.error pages redirection",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#setup-necessary-error-pages-and-redirection-links",
            "assessor": "human"
          },
          {
            "guideline": "4.10",
            "title": "Review CDN Usage and Geographic Distribution",
            "urgency": "investigate",
            "detail": "Confirm that static assets are served from a CDN and that the CDN edge nodes are geographically close to the primary audience. CDN misuse—or absence—increases last-mile transfer distance and the associated energy cost of data delivery.",
            "wsid": "4.content delivery networks",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#use-content-delivery-networks-cdns-appropriately",
            "assessor": "human"
          },
          {
            "guideline": "5.2",
            "title": "Confirm a Sustainability Advocate Is Assigned",
            "urgency": "investigate",
            "detail": "Verify that someone on the team has explicit responsibility for web sustainability. Without a designated advocate, sustainability improvements tend to be deprioritized and never reach the backlog.",
            "wsid": "5.assign sustainability advocate",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#assign-a-sustainability-advocate",
            "assessor": "human"
          },
          {
            "guideline": "5.8",
            "title": "Check for a Public Sustainability Statement",
            "urgency": "investigate",
            "detail": "Look for a publicly accessible sustainability statement, disclosure page, or environmental policy. Mandatory disclosure requirements are growing globally and transparency builds user trust. The statement should include measurable targets and dates.",
            "wsid": "5.support mandatory disclosures",
            "wsgUrl": "https://www.w3.org/TR/web-sustainability-guidelines/#support-mandatory-disclosures-and-reporting",
            "assessor": "human"
          }
        ]
      },
      "gridAware": {
        "detected": false,
        "signals": {
          "hasGridAwareAttr": false,
          "gridAwareValue": null,
          "hasInfoBar": false,
          "scriptSignals": [],
          "headerSignals": [],
          "electricityMapsRequests": 0
        },
        "recommendations": [
          {
            "title": "Consider implementing grid-aware website adaptation",
            "urgency": "investigate",
            "detail": "Grid-aware websites serve lighter experiences when the local grid runs on carbon-intensive energy. The Green Web Foundation provides a JS library and edge-function plugins (Cloudflare Workers, Netlify Edge) to implement this with minimal code.",
            "wsgUrl": "https://www.thegreenwebfoundation.org/tools/grid-aware-websites/",
            "assessor": "human"
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "checks": {
          "hasEffectiveTextCompression": true
        },
        "opportunities": [],
        "recommendations": [
          {
            "title": "No major compression opportunity detected",
            "urgency": "low",
            "detail": "Compression signals look healthy in current Lighthouse audits; continue enforcing compression and asset encoding in CI/CD."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 0,
        "urgency": "low",
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 0,
        "opportunities": [],
        "recommendations": [
          {
            "title": "No obvious optimization bloat signals",
            "urgency": "low",
            "detail": "No major easy-win optimization opportunities were detected from current Lighthouse signals."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 0,
        "urgency": "low",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 0,
        "recommendations": [
          {
            "title": "No dependency maintenance warnings detected",
            "urgency": "low",
            "detail": "No vulnerable dependency flags were found for this page in the current lightweight checks."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0,
          "cacheSavingsBytes": 0
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "high",
            "detail": "Improve long-lived cache headers for immutable static assets."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "css": {
          "unusedBytes": 0,
          "ratio": 0,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 0,
          "duplicatedBytes": 0,
          "ratio": 0,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedDeferrableBytes": 0,
        "renderBlockingMs": 0,
        "breakdown": {
          "offscreenImageSavings": 0,
          "unusedJavascriptSavings": 0,
          "unusedCssSavings": 0
        },
        "candidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 0,
        "urgency": "low",
        "providerCount": 0,
        "requestCount": 0,
        "transferBytes": 0,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [],
        "recommendations": [
          {
            "title": "No major third-party JavaScript risk signals",
            "urgency": "low",
            "detail": "Continue periodic reviews so third-party additions are assessed with the same rigor as first-party code."
          }
        ]
      },
      "redundancy": {
        "score": 0,
        "urgency": "low",
        "transferBytes": 0,
        "estimatedRedundantBytes": 0,
        "redundancyRatio": 0,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [],
        "recommendations": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 0,
        "urgency": "low",
        "totalTransferBytes": 0,
        "heavyRequestCount": 0,
        "heavyBytes": 0,
        "heavyRatio": 0,
        "heavyRequests": [],
        "groupedByType": [],
        "groupedByOrigin": [],
        "onDemandCandidates": [],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Initial server response time was short",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Initial server response time was short\n\n- Lighthouse audit: server-response-time\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoids enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoids an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": null,
          "displayValue": "",
          "impact": "investigate",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "assessor": "script",
          "issueTemplate": "## Improve Avoids an excessive DOM size\n\n- Lighthouse audit: dom-size\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    }
  ]
}
