{
  "url": "https://e621.net",
  "auditedAt": "2026-07-28T11:50:36.938Z",
  "mode": "report",
  "status": "partial",
  "statusDetail": "57 of 58 checks were conclusively judged. Authentication/passkey inspection was blocked by a Cloudflare 403 challenge on /session/new.",
  "page": {
    "appType": "mpa",
    "framework": "Ruby on Rails-style server-rendered MPA with Vite assets",
    "notes": "Adult media gallery. A mandatory 18+ Terms gate precedes public SSR listing, search, detail and help surfaces."
  },
  "evidenceUsed": [
    "screenshot",
    "transition-video",
    "dom",
    "layout-metrics",
    "evaluate-probe",
    "trace",
    "har",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "heap-summary",
    "lighthouse"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "accessibility",
    "same-document-transitions",
    "scrollytelling",
    "physics-based-easing",
    "shrinking-header-on-scroll",
    "position-aware-tooltips",
    "directional-navigation-transitions",
    "light-dismiss-a-dialog",
    "declarative-dialog-popover-control",
    "css-layout",
    "size-aware-styling",
    "forms",
    "persistent-toast-notifications",
    "performance",
    "break-up-long-tasks",
    "optimize-image-priority",
    "identify-heavy-scripts",
    "improve-text-layout-and-legibility",
    "html",
    "security",
    "privacy",
    "flicker-free-client-side-ab-testing",
    "translator",
    "support-global-calendar-systems",
    "validate-input-after-interaction",
    "autofill-sign-in-form",
    "deliver-optimized-decorative-images",
    "deprioritize-background-fetches",
    "webmcp",
    "language-model",
    "manage-recurring-intervals"
  ],
  "artifacts": [
    {
      "type": "other",
      "path": "evidence/controls.json",
      "caption": "controls.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "cookies.json",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-crawler.png",
      "caption": "discoverability crawler.png",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-rendered.png",
      "caption": "discoverability rendered.png",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/discoverability.json",
      "caption": "discoverability.json",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/gate-dark.png",
      "caption": "gate dark.png",
      "findingIds": [
        "F-01"
      ]
    },
    {
      "type": "other",
      "path": "evidence/gate-hygiene.json",
      "caption": "gate hygiene.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/gate-images.json",
      "caption": "gate images.json",
      "findingIds": []
    },
    {
      "type": "layout",
      "path": "evidence/gate-mobile-layout.json",
      "caption": "gate mobile layout.json",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/gate-mobile.png",
      "caption": "gate mobile.png",
      "findingIds": [
        "F-04"
      ]
    },
    {
      "type": "other",
      "path": "evidence/guidance/accessibility.md",
      "caption": "accessibility.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/autofill-sign-in-form.md",
      "caption": "autofill sign in form.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/break-up-long-tasks.md",
      "caption": "break up long tasks.md",
      "findingIds": []
    },
    {
      "type": "layout",
      "path": "evidence/guidance/css-layout.md",
      "caption": "css layout.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/custom-button-actions.md",
      "caption": "custom button actions.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/dark-mode.md",
      "caption": "dark mode.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/declarative-dialog-popover-control.md",
      "caption": "declarative dialog popover control.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/deliver-optimized-decorative-images.md",
      "caption": "deliver optimized decorative images.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/deprioritize-background-fetches.md",
      "caption": "deprioritize background fetches.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/directional-navigation-transitions.md",
      "caption": "directional navigation transitions.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/flicker-free-client-side-ab-testing.md",
      "caption": "flicker free client side ab testing.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/forms.md",
      "caption": "forms.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/html.md",
      "caption": "html.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/identify-heavy-scripts.md",
      "caption": "identify heavy scripts.md",
      "findingIds": []
    },
    {
      "type": "layout",
      "path": "evidence/guidance/improve-text-layout-and-legibility.md",
      "caption": "improve text layout and legibility.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/language-model.md",
      "caption": "language model.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/light-dismiss-a-dialog.md",
      "caption": "light dismiss a dialog.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/manage-recurring-intervals.md",
      "caption": "manage recurring intervals.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/optimize-image-priority.md",
      "caption": "optimize image priority.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/performance.md",
      "caption": "performance.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/persistent-toast-notifications.md",
      "caption": "persistent toast notifications.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/physics-based-easing.md",
      "caption": "physics based easing.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/position-aware-tooltips.md",
      "caption": "position aware tooltips.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/privacy.md",
      "caption": "privacy.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/same-document-transitions.md",
      "caption": "same document transitions.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/scrollytelling.md",
      "caption": "scrollytelling.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/search-1.json",
      "caption": "search 1.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/search-2.json",
      "caption": "search 2.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/search-3.json",
      "caption": "search 3.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/search-4.json",
      "caption": "search 4.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/search-5.json",
      "caption": "search 5.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/search-6.json",
      "caption": "search 6.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/search-7.json",
      "caption": "search 7.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/search-8.json",
      "caption": "search 8.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/security.md",
      "caption": "security.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/shrinking-header-on-scroll.md",
      "caption": "shrinking header on scroll.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/size-aware-styling.md",
      "caption": "size aware styling.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/support-global-calendar-systems.md",
      "caption": "support global calendar systems.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/translator.md",
      "caption": "translator.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/validate-input-after-interaction.md",
      "caption": "validate input after interaction.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance/webmcp.md",
      "caption": "webmcp.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-list.json",
      "caption": "guidance list.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "headers.json",
      "findingIds": [
        "F-16"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-after-accept.png",
      "caption": "home after accept.png",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-after-accept2.png",
      "caption": "home after accept2.png",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "home desktop.png",
      "findingIds": [
        "F-01"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "home dom.json",
      "findingIds": [
        "F-04",
        "F-13"
      ]
    },
    {
      "type": "other",
      "path": "evidence/i18n-probe.json",
      "caption": "i18n probe.json",
      "findingIds": [
        "F-18"
      ]
    },
    {
      "type": "other",
      "path": "evidence/interactive-selectors.json",
      "caption": "interactive selectors.json",
      "findingIds": []
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse.json",
      "caption": "lighthouse.json",
      "findingIds": [
        "F-04",
        "F-06",
        "F-07",
        "F-08",
        "F-09",
        "F-10",
        "F-14",
        "F-19"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/posts-desktop-final.png",
      "caption": "posts desktop final.png",
      "findingIds": [
        "F-03",
        "F-11"
      ]
    },
    {
      "type": "video",
      "path": "evidence/posts-desktop.mp4",
      "caption": "posts desktop.mp4",
      "findingIds": [
        "F-02"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/posts-heap-baseline.json",
      "caption": "posts heap baseline.json",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/posts-heap-repeat.json",
      "caption": "posts heap repeat.json",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/posts-mobile-final.png",
      "caption": "posts mobile final.png",
      "findingIds": [
        "F-03",
        "F-05"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/posts-mobile-layout.json",
      "caption": "posts mobile layout.json",
      "findingIds": [
        "F-12"
      ]
    },
    {
      "type": "video",
      "path": "evidence/posts-mobile.mp4",
      "caption": "posts mobile.mp4",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/posts-probe.json",
      "caption": "posts probe.json",
      "findingIds": [
        "F-02",
        "F-03",
        "F-05",
        "F-10",
        "F-11",
        "F-12",
        "F-15"
      ]
    },
    {
      "type": "har-summary",
      "path": "evidence/posts-summary.json",
      "caption": "posts summary.json",
      "findingIds": [
        "F-07"
      ]
    },
    {
      "type": "trace-summary",
      "path": "evidence/posts-trace-summary.json",
      "caption": "posts trace summary.json",
      "findingIds": [
        "F-06"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/posts-trace.json",
      "caption": "posts trace.json",
      "findingIds": [
        "F-06"
      ]
    },
    {
      "type": "har",
      "path": "evidence/posts.har",
      "caption": "posts.har",
      "findingIds": [
        "F-07"
      ]
    },
    {
      "type": "other",
      "path": "evidence/preferences-probe.json",
      "caption": "preferences probe.json",
      "findingIds": [
        "F-01"
      ]
    },
    {
      "type": "other",
      "path": "evidence/pwa-probe.json",
      "caption": "pwa probe.json",
      "findingIds": [
        "F-17"
      ]
    },
    {
      "type": "other",
      "path": "evidence/recon-after-accept.json",
      "caption": "recon after accept.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/recovery-probe.json",
      "caption": "recovery probe.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/routes-recon.json",
      "caption": "routes recon.json",
      "findingIds": [
        "F-13",
        "F-14"
      ]
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "secrets.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/system-routes.json",
      "caption": "system routes.json",
      "findingIds": [
        "F-17"
      ]
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "trackers.json",
      "findingIds": []
    }
  ],
  "config": {
    "loaded": false
  },
  "coverage": {
    "catalogVersion": "modern-web-guidance@0.0.172",
    "catalogChecksum": "sha256:78ccfdb2d483f4c57d9dafed80fd86c6265585a56457c8dcfddc254b80fb44d7",
    "expected": 58,
    "recorded": 58,
    "judged": 57,
    "blocked": 1,
    "notRun": 0,
    "missing": 0,
    "unknown": 0,
    "duplicates": 0,
    "complete": false
  },
  "checkOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-color-scheme",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "The preference probe matched prefers-color-scheme: dark, but found color-scheme: normal and no prefers-color-scheme rules; the light and dark captures use the same palette.",
      "pathIds": [
        "gate"
      ],
      "artifacts": [
        "evidence/preferences-probe.json",
        "evidence/gate-dark.png",
        "evidence/home-desktop.png"
      ],
      "findingIds": [
        "F-01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "No active animations were reported under prefers-reduced-motion: reduce; the representative gate and listing remained static.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Lighthouse found a contrast defect under the separate inclusive contrast check, but controls and text remained visible in the tested dark surface and no forced-colors-breaking styling was observed.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "The rendered listing probe found no view-transition CSS, and the listing navigation video shows an abrupt full-document swap.",
      "pathIds": [
        "listing"
      ],
      "artifacts": [
        "evidence/posts-probe.json",
        "evidence/posts-desktop.mp4"
      ],
      "findingIds": [
        "F-02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement across representative public surfaces",
      "evidence": "No scroll-linked parallax, scrollytelling, carousel animation, or entry/exit reveal was present on the representative routes.",
      "reason": "No scroll-linked parallax, scrollytelling, carousel animation, or entry/exit reveal was present on the representative routes."
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement across representative public surfaces",
      "evidence": "No gesture-driven or swipe/pull interaction was present; standard scrolling and links use platform behavior.",
      "reason": "No gesture-driven or swipe/pull interaction was present; standard scrolling and links use platform behavior."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "medium",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "The desktop and mobile listing captures show fixed-height navigation/news chrome, and CSS inspection found no scroll-driven timeline or scroll-state behavior.",
      "pathIds": [
        "listing"
      ],
      "artifacts": [
        "evidence/posts-desktop-final.png",
        "evidence/posts-mobile-final.png",
        "evidence/posts-probe.json"
      ],
      "findingIds": [
        "F-03"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement across representative public surfaces",
      "evidence": "No tooltip, popover, or floating menu that requires viewport-edge anchoring was observed on the tested public surfaces.",
      "reason": "No tooltip, popover, or floating menu that requires viewport-edge anchoring was observed on the tested public surfaces."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Desktop and mobile captures show an active Posts context, clearly separated primary/secondary navigation, and a focused single-column mobile progression.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "The only load-time full-screen interruption is the necessary 18+ Terms gate, with explicit Decline and disabled-until-confirmed Accept actions; no marketing interstitial obscured content.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "DOM evidence shows <form id=\"tos-form\" role=\"dialog\" aria-modal=\"true\">; Lighthouse reports its ARIA role is inappropriate for the element.",
      "pathIds": [
        "gate"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/lighthouse.json",
        "evidence/gate-mobile.png"
      ],
      "findingIds": [
        "F-04"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "The desktop listing allocates most width to the media grid and the mobile layout removes the sidebar/navigation rows behind a menu.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Layout primitives at 360×800 reported 0px horizontal overflow for both the gate and accepted listing; mobile screenshots show reflow rather than clipping.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "CSS inspection found container-query rules, and the same gallery changes from a five-column desktop grid to a three-column narrow layout.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "The rendered listing probe measured toolbar buttons at 32×20px and multiple links at 15–20px high, below a comfortable 44×44 CSS pixel target, although keyboard focus remains visible.",
      "pathIds": [
        "listing"
      ],
      "artifacts": [
        "evidence/posts-probe.json",
        "evidence/posts-mobile-final.png"
      ],
      "findingIds": [
        "F-05"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "The entry gate states the access requirement; after acceptance the listing labels the search field “Posts” and makes tag search the dominant action.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Acceptance followed by /posts and a query URL returned successful SSR listing/search pages; representative browsing did not dead-end.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "An empty search reports “0 results”, “Nobody here but us chickens!” and “Go back”; an unknown route returns HTTP 404 and “Not found.”",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Lighthouse measured 3.8s LCP on the entry surface; the accepted-listing trace measured 5.13s LCP. CLS was 0.004 and TBT was effectively zero.",
      "pathIds": [
        "listing"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/posts-trace-summary.json",
        "evidence/posts-trace.json"
      ],
      "findingIds": [
        "F-06"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Lighthouse CLS was 0.0039 and both layout captures observed no shifts.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Listing trace found zero long tasks and 0ms TBT; Lighthouse TBT was 2ms.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Lighthouse measured 2.31s root response time and identified the 46.5KB stylesheet as render blocking with about 170ms potential savings.",
      "pathIds": [
        "gate"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/posts-summary.json",
        "evidence/posts.har"
      ],
      "findingIds": [
        "F-07"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Lighthouse estimated 43.4KB of 46.4KB CSS (93.5%) was unused on the entry surface.",
      "pathIds": [
        "gate"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F-08"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Lighthouse flags the form-as-dialog role; the listing DOM probe found visible post editor textareas/buttons with no label or aria-label.",
      "pathIds": [
        "listing"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/posts-probe.json"
      ],
      "findingIds": [
        "F-10"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Lighthouse/axe measured 3.55:1 for green tag text on #1f3c67 (4.5:1 required) and 1.73:1 differentiation between an inline link and surrounding text, with no underline.",
      "pathIds": [
        "gate"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F-09"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "The rendered listing probe found NAV/NAV/FOOTER but no MAIN; its only H1 is “Edit”, while the visible primary section is “Posts”. Focus itself has a dotted outline.",
      "pathIds": [
        "listing"
      ],
      "artifacts": [
        "evidence/posts-probe.json",
        "evidence/posts-desktop-final.png"
      ],
      "findingIds": [
        "F-11"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Desktop and mobile screenshots show readable text scaling and line wrapping without clipping; the long Terms copy remains scrollable.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Mobile reflow and viewport scaling are allowed, but the undersized-target issue is recorded under input-modality-aware; no essential timed media was present.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Lighthouse best-practices scored 100 and the runtime probes completed without an uncaught page exception.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "The rendered listing probe counted 76 images, 75 without width and height attributes. Current measured CLS was low, but intrinsic reservation is absent in authored markup.",
      "pathIds": [
        "listing"
      ],
      "artifacts": [
        "evidence/posts-probe.json",
        "evidence/posts-mobile-layout.json"
      ],
      "findingIds": [
        "F-12"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Lighthouse best-practices scored 100; no permission prompt appeared, positive tabindex count was zero, and no deprecated/paste-blocking behavior was observed.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "The entry page title is only “e621”; listing meta description is only “e621”. The listing title is descriptive, but the description does not explain the page.",
      "pathIds": [
        "gate"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/routes-recon.json"
      ],
      "findingIds": [
        "F-13"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Lighthouse SEO flags the /static/site_map link text “More”; viewport metadata and real href links otherwise pass.",
      "pathIds": [
        "gate"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/routes-recon.json"
      ],
      "findingIds": [
        "F-14"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Public pages returned successful status and canonical URLs; robots.txt advertises a sitemap and allows ordinary crawlers while deliberately excluding AI training crawlers. Dynamic listings intentionally use noindex.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "The listing probe found og:title set to “ - e621” and og:description to “e621”, despite two JSON-LD blocks.",
      "pathIds": [
        "listing"
      ],
      "artifacts": [
        "evidence/posts-probe.json"
      ],
      "findingIds": [
        "F-15"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Headers show Strict-Transport-Security: max-age=0, which disables HSTS; CSP allows unsafe-inline styles, Permissions-Policy is absent, and the nosniff header is malformed/duplicated in the capture.",
      "pathIds": [
        "gate"
      ],
      "artifacts": [
        "evidence/headers.json"
      ],
      "findingIds": [
        "F-16"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Tracker capture found one third-party origin (op.dragonfru.it), no known tracker domains, no third-party cookies, and no exposed secrets.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "blocked",
      "confidence": "high",
      "method": "Attempted direct auth-route walkthrough",
      "evidence": "The public site made no permission request on load, but /session/new returned a Cloudflare 403 challenge to the audit browser, so passkey/password implementation could not be inspected.",
      "reason": "The public site made no permission request on load, but /session/new returned a Cloudflare 403 challenge to the audit browser, so passkey/password implementation could not be inspected.",
      "pathIds": [
        "auth"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "CSP includes frame-ancestors none, X-Frame-Options, and strict-origin-when-cross-origin; remaining header gaps are linked to the secure transport finding.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Discoverability found 100% raw/rendered content coverage and no JS shell; fetched listing/help/detail HTML contains core content before JavaScript.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Advanced/listing controls rendered within both desktop and mobile viewports and the representative panel open/close interaction completed repeatedly.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "manifest.json provides name, icons, standalone display and start_url, but the service-worker probe found zero registrations and no controlling worker.",
      "pathIds": [
        "listing"
      ],
      "artifacts": [
        "evidence/system-routes.json",
        "evidence/pwa-probe.json"
      ],
      "findingIds": [
        "F-17"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Unknown routes return HTTP 404 with “Not found”; empty search provides a clear zero state and Go back action.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "The listing correctly declares lang=\"en\", but CSS inspection counted 499 physical-side declarations and no logical margin/padding/border declarations; dir is not explicitly declared.",
      "pathIds": [
        "listing"
      ],
      "artifacts": [
        "evidence/i18n-probe.json"
      ],
      "findingIds": [
        "F-18"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Post timestamps are stored as unambiguous ISO 8601 values with offsets; no locale-formatted currency or numeric input was present in the tested public task.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Sample post timestamps include explicit -04:00 offsets, avoiding ambiguous stored local times; no scheduling or recurring event surface was present.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "The age/Terms gate uses neutral confirmation labels, explicit Decline, disabled Accept until both acknowledgements, and no confirmshaming or forced continuity.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "The public search has no required fields; its empty state explains the result and offers Go back rather than blaming the user.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement across representative public surfaces",
      "evidence": "The tested public task uses tag search rather than identity, address, payment, or account inputs where autofill tokens apply.",
      "reason": "The tested public task uses tag search rather than identity, address, payment, or account inputs where autofill tokens apply."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "No checkout, subscription, or paid continuity flow was present on public pages; account authentication itself is covered by the blocked auth check.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Lighthouse estimated 18.9KB savings by serving the 64.5KB PNG mascot in a modern compressed format.",
      "pathIds": [
        "gate"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F-19"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "The accepted listing transferred 441KB total, scripts were about 100KB, the trace showed no long tasks, and no continuous background media was observed.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "HAR recorded a modest 441KB load with about 135KB fonts, no media resources, and only one third-party origin; visible previews are value-bearing content.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement across representative public surfaces",
      "evidence": "The site explicitly disallows major AI crawlers in robots.txt and exposes no stated agent-facing intent; emerging WebMCP capabilities are therefore out of scope.",
      "reason": "The site explicitly disallows major AI crawlers in robots.txt and exposes no stated agent-facing intent; emerging WebMCP capabilities are therefore out of scope."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement across representative public surfaces",
      "evidence": "No user task on the representative public gallery requires built-in on-device inference, and no agent-facing intent is declared.",
      "reason": "No user task on the representative public gallery requires built-in on-device inference, and no agent-facing intent is declared."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "After ten open/close cycles of Advanced Search, heap grew only 11,881 bytes and 56 nodes versus baseline, with no detached constructor in the summaries.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Accepted listing baseline heap was 10.68MB across 148,794 nodes, proportionate to a 76-image interactive gallery.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual/DOM/objective probe against representative paths",
      "evidence": "Before/after heap summaries exposed no Detached* constructors and only a 0.04% node-count increase after ten panel cycles.",
      "pathIds": [
        "gate",
        "listing",
        "search",
        "detail",
        "help",
        "recovery"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-01"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-02"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-03"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-04"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-05"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-06",
        "F-07",
        "F-08"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-10",
        "F-09",
        "F-11"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-12"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-13",
        "F-14",
        "F-15"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-16"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F-17"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F-18"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F-19"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "The site explicitly disallows major AI crawlers in robots.txt and exposes no stated agent-facing intent; emerging WebMCP capabilities are therefore out of scope. No user task on the representative public gallery requires built-in on-device inference, and no agent-facing intent is declared."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "gate",
      "description": "Entry and mandatory 18+/Terms gate; tests first impression, legal interruption, preferences, semantics and security.",
      "url": "https://e621.net/",
      "conditions": [
        "desktop",
        "viewport: 360x800",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce",
        "keyboard focus"
      ],
      "result": "issues"
    },
    {
      "id": "listing",
      "description": "Accepted Posts listing; representative content index and primary browse task.",
      "url": "https://e621.net/posts",
      "conditions": [
        "desktop",
        "viewport: 360x800",
        "repeated Advanced Search open/close"
      ],
      "result": "issues"
    },
    {
      "id": "search",
      "description": "Tag-query and deliberately empty-query results; representative primary search flow and empty state.",
      "url": "https://e621.net/posts?tags=order%3Ascore",
      "conditions": [
        "SSR fetch",
        "empty-result query"
      ],
      "result": "pass"
    },
    {
      "id": "detail",
      "description": "Representative post-detail template, sampled with /posts/404 and current listing metadata.",
      "url": "https://e621.net/posts/404",
      "conditions": [
        "SSR fetch"
      ],
      "result": "issues"
    },
    {
      "id": "help",
      "description": "Help/content template representing documentation and navigation depth.",
      "url": "https://e621.net/help",
      "conditions": [
        "SSR fetch"
      ],
      "result": "pass"
    },
    {
      "id": "recovery",
      "description": "Unknown route and zero-result search, covering HTTP and empty-state recovery.",
      "url": "https://e621.net/this-route-does-not-exist-atomic-audit",
      "conditions": [
        "HTTP 404",
        "empty search"
      ],
      "result": "pass"
    },
    {
      "id": "auth",
      "description": "Sign-in/account journey, selected because authentication security and input assistance are high-risk.",
      "url": "https://e621.net/session/new",
      "conditions": [
        "audit browser"
      ],
      "result": "failed"
    }
  ],
  "findings": [
    {
      "id": "F-01",
      "severity": "medium",
      "confidence": "high",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "user-experience",
      "pathId": "gate",
      "url": "https://e621.net/",
      "summary": "The fixed dark palette is not connected to the user’s color-scheme preference.",
      "evidence": "The preference probe matched prefers-color-scheme: dark, but found color-scheme: normal and no prefers-color-scheme rules; the light and dark captures use the same palette.",
      "artifacts": [
        "evidence/preferences-probe.json",
        "evidence/gate-dark.png",
        "evidence/home-desktop.png"
      ],
      "suggestedFix": "Declare <meta name=\"color-scheme\" content=\"light dark\"> and :root { color-scheme: light dark }, then map surface tokens with light-dark() or a prefers-color-scheme fallback.",
      "effort": "medium"
    },
    {
      "id": "F-02",
      "severity": "low",
      "confidence": "high",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "same-document-transitions",
      "guidanceCategory": "user-experience",
      "pathId": "listing",
      "url": "https://e621.net/posts",
      "summary": "Route and major state changes do not use View Transitions.",
      "evidence": "The rendered listing probe found no view-transition CSS, and the listing navigation video shows an abrupt full-document swap.",
      "artifacts": [
        "evidence/posts-probe.json",
        "evidence/posts-desktop.mp4"
      ],
      "suggestedFix": "Add progressive cross-document View Transitions for MPA navigation and same-document transitions for large panel/state changes, with reduced-motion handling.",
      "effort": "medium"
    },
    {
      "id": "F-03",
      "severity": "low",
      "confidence": "medium",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "shrinking-header-on-scroll",
      "guidanceCategory": "css",
      "pathId": "listing",
      "url": "https://e621.net/posts",
      "summary": "Navigation chrome does not react to scroll position.",
      "evidence": "The desktop and mobile listing captures show fixed-height navigation/news chrome, and CSS inspection found no scroll-driven timeline or scroll-state behavior.",
      "artifacts": [
        "evidence/posts-desktop-final.png",
        "evidence/posts-mobile-final.png",
        "evidence/posts-probe.json"
      ],
      "suggestedFix": "Use a sticky header container and a scroll-state query or a lightweight progressive fallback to compact secondary chrome after scrolling.",
      "effort": "medium"
    },
    {
      "id": "F-04",
      "severity": "medium",
      "confidence": "high",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "declarative-dialog-popover-control",
      "guidanceCategory": "html",
      "pathId": "gate",
      "url": "https://e621.net/",
      "summary": "The mandatory Terms gate is a form with role=\"dialog\" rather than a native modal dialog.",
      "evidence": "DOM evidence shows <form id=\"tos-form\" role=\"dialog\" aria-modal=\"true\">; Lighthouse reports its ARIA role is inappropriate for the element.",
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/lighthouse.json",
        "evidence/gate-mobile.png"
      ],
      "suggestedFix": "Place the form inside a native <dialog>, open it with showModal(), preserve the explicit decline action, and let the top layer provide focus containment/inert behavior.",
      "effort": "small"
    },
    {
      "id": "F-05",
      "severity": "medium",
      "confidence": "high",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "pathId": "listing",
      "url": "https://e621.net/posts",
      "summary": "Several controls and links have undersized touch targets.",
      "evidence": "The rendered listing probe measured toolbar buttons at 32×20px and multiple links at 15–20px high, below a comfortable 44×44 CSS pixel target, although keyboard focus remains visible.",
      "artifacts": [
        "evidence/posts-probe.json",
        "evidence/posts-mobile-final.png"
      ],
      "suggestedFix": "Increase hit areas with padding/min-inline-size/min-block-size while retaining visible focus and compact visual glyphs.",
      "effort": "small"
    },
    {
      "id": "F-06",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "guidanceCategory": "performance",
      "pathId": "listing",
      "url": "https://e621.net/posts",
      "summary": "Largest Contentful Paint is outside the good range.",
      "evidence": "Lighthouse measured 3.8s LCP on the entry surface; the accepted-listing trace measured 5.13s LCP. CLS was 0.004 and TBT was effectively zero.",
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/posts-trace-summary.json",
        "evidence/posts-trace.json"
      ],
      "suggestedFix": "Reduce document latency and prioritize the actual LCP image/content; keep the strong main-thread and stability results.",
      "effort": "medium"
    },
    {
      "id": "F-07",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "performance",
      "guidanceCategory": "performance",
      "pathId": "gate",
      "url": "https://e621.net/",
      "summary": "Slow document response and render-blocking CSS delay first render.",
      "evidence": "Lighthouse measured 2.31s root response time and identified the 46.5KB stylesheet as render blocking with about 170ms potential savings.",
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/posts-summary.json",
        "evidence/posts.har"
      ],
      "suggestedFix": "Improve cached document generation/edge delivery, inline only critical gate styles, and defer or split non-critical CSS.",
      "effort": "medium"
    },
    {
      "id": "F-08",
      "severity": "low",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "performance",
      "pathId": "gate",
      "url": "https://e621.net/",
      "summary": "The entry surface ships mostly unused CSS.",
      "evidence": "Lighthouse estimated 43.4KB of 46.4KB CSS (93.5%) was unused on the entry surface.",
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Create a small gate/home critical stylesheet and load gallery/editor styles only on routes that need them.",
      "effort": "medium"
    },
    {
      "id": "F-09",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "pathId": "gate",
      "url": "https://e621.net/",
      "summary": "Some tag and inline-link colors fail WCAG contrast requirements.",
      "evidence": "Lighthouse/axe measured 3.55:1 for green tag text on #1f3c67 (4.5:1 required) and 1.73:1 differentiation between an inline link and surrounding text, with no underline.",
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Raise foreground contrast to at least 4.5:1 for normal text and add a non-color link cue such as underline.",
      "effort": "small"
    },
    {
      "id": "F-10",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "pathId": "listing",
      "url": "https://e621.net/posts",
      "summary": "The dialog role and several editor controls lack robust accessible semantics.",
      "evidence": "Lighthouse flags the form-as-dialog role; the listing DOM probe found visible post editor textareas/buttons with no label or aria-label.",
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/posts-probe.json"
      ],
      "suggestedFix": "Use native dialog semantics and provide explicit visible labels or accessible names for every editor control.",
      "effort": "small"
    },
    {
      "id": "F-11",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "pathId": "listing",
      "url": "https://e621.net/posts",
      "summary": "The listing lacks a main landmark and has a misleading heading outline.",
      "evidence": "The rendered listing probe found NAV/NAV/FOOTER but no MAIN; its only H1 is “Edit”, while the visible primary section is “Posts”. Focus itself has a dotted outline.",
      "artifacts": [
        "evidence/posts-probe.json",
        "evidence/posts-desktop-final.png"
      ],
      "suggestedFix": "Wrap primary results in <main>, make “Posts” the H1, and place panel headings in a logical H2/H3 hierarchy.",
      "effort": "small"
    },
    {
      "id": "F-12",
      "severity": "medium",
      "confidence": "high",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "performance",
      "guidanceCategory": "performance",
      "pathId": "listing",
      "url": "https://e621.net/posts",
      "summary": "Most listing images omit intrinsic width and height attributes.",
      "evidence": "The rendered listing probe counted 76 images, 75 without width and height attributes. Current measured CLS was low, but intrinsic reservation is absent in authored markup.",
      "artifacts": [
        "evidence/posts-probe.json",
        "evidence/posts-mobile-layout.json"
      ],
      "suggestedFix": "Emit width and height from each post’s known preview dimensions and preserve responsive sizing with height:auto.",
      "effort": "small"
    },
    {
      "id": "F-13",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-discoverable",
      "principleCheckId": "title-and-description",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "pathId": "gate",
      "url": "https://e621.net/",
      "summary": "Entry-page metadata is too generic to describe the site.",
      "evidence": "The entry page title is only “e621”; listing meta description is only “e621”. The listing title is descriptive, but the description does not explain the page.",
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/routes-recon.json"
      ],
      "suggestedFix": "Give each public template a concise unique title and a human-readable description of its purpose.",
      "effort": "trivial"
    },
    {
      "id": "F-14",
      "severity": "low",
      "confidence": "high",
      "principleId": "be-discoverable",
      "principleCheckId": "crawlable-and-mobile-friendly",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "pathId": "gate",
      "url": "https://e621.net/",
      "summary": "At least one global navigation label is not descriptive.",
      "evidence": "Lighthouse SEO flags the /static/site_map link text “More”; viewport metadata and real href links otherwise pass.",
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/routes-recon.json"
      ],
      "suggestedFix": "Rename “More” to “Site map” or provide an equally descriptive accessible name.",
      "effort": "trivial"
    },
    {
      "id": "F-15",
      "severity": "low",
      "confidence": "high",
      "principleId": "be-discoverable",
      "principleCheckId": "structured-and-shareable-metadata",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "pathId": "listing",
      "url": "https://e621.net/posts",
      "summary": "Listing share metadata is malformed or generic.",
      "evidence": "The listing probe found og:title set to “ - e621” and og:description to “e621”, despite two JSON-LD blocks.",
      "artifacts": [
        "evidence/posts-probe.json"
      ],
      "suggestedFix": "Generate accurate per-template Open Graph title/description and validate JSON-LD against visible content.",
      "effort": "small"
    },
    {
      "id": "F-16",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "pathId": "gate",
      "url": "https://e621.net/",
      "summary": "HSTS is effectively disabled and the header policy has avoidable gaps.",
      "evidence": "Headers show Strict-Transport-Security: max-age=0, which disables HSTS; CSP allows unsafe-inline styles, Permissions-Policy is absent, and the nosniff header is malformed/duplicated in the capture.",
      "artifacts": [
        "evidence/headers.json"
      ],
      "suggestedFix": "Deploy HSTS with a durable max-age after rollout validation, send one valid nosniff header, add a least-privilege Permissions-Policy, and remove unsafe-inline styles via nonces/hashes where feasible.",
      "effort": "medium"
    },
    {
      "id": "F-17",
      "severity": "low",
      "confidence": "high",
      "principleId": "be-resilient",
      "principleCheckId": "offline-and-installable",
      "guidanceId": "performance",
      "guidanceCategory": "performance",
      "pathId": "listing",
      "url": "https://e621.net/posts",
      "summary": "The app-like gallery advertises installability but has no offline worker.",
      "evidence": "manifest.json provides name, icons, standalone display and start_url, but the service-worker probe found zero registrations and no controlling worker.",
      "artifacts": [
        "evidence/system-routes.json",
        "evidence/pwa-probe.json"
      ],
      "suggestedFix": "Add a bounded service worker with network-first HTML, cache-first versioned assets, and a useful offline fallback, or remove standalone install cues if offline resilience is not intended.",
      "effort": "medium"
    },
    {
      "id": "F-18",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-internationalised",
      "principleCheckId": "lang-dir-and-logical-properties",
      "guidanceId": "translator",
      "guidanceCategory": "internationalization",
      "pathId": "listing",
      "url": "https://e621.net/posts",
      "summary": "The stylesheet is not writing-mode resilient.",
      "evidence": "The listing correctly declares lang=\"en\", but CSS inspection counted 499 physical-side declarations and no logical margin/padding/border declarations; dir is not explicitly declared.",
      "artifacts": [
        "evidence/i18n-probe.json"
      ],
      "suggestedFix": "Migrate reusable layout rules to inline/block logical properties and verify a dir=rtl smoke test; keep language declarations accurate.",
      "effort": "large"
    },
    {
      "id": "F-19",
      "severity": "low",
      "confidence": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "deliver-optimized-decorative-images",
      "guidanceCategory": "performance",
      "pathId": "gate",
      "url": "https://e621.net/",
      "summary": "The homepage mascot image can be delivered more efficiently.",
      "evidence": "Lighthouse estimated 18.9KB savings by serving the 64.5KB PNG mascot in a modern compressed format.",
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Generate AVIF/WebP variants for the mascot and use picture/source negotiation while keeping explicit dimensions.",
      "effort": "small"
    }
  ],
  "taskList": [
    {
      "id": "T-01",
      "title": "Restore effective transport/browser security policies",
      "priority": 1,
      "findingIds": [
        "F-16"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T-02",
      "title": "Bring text and link contrast up to WCAG AA",
      "priority": 2,
      "findingIds": [
        "F-09"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T-03",
      "title": "Improve LCP by fixing response latency and critical delivery",
      "priority": 3,
      "findingIds": [
        "F-06",
        "F-07"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T-04",
      "title": "Repair landmarks, headings, dialog semantics and control names",
      "priority": 4,
      "findingIds": [
        "F-04",
        "F-10",
        "F-11"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T-05",
      "title": "Make controls comfortably touchable",
      "priority": 5,
      "findingIds": [
        "F-05"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T-06",
      "title": "Emit intrinsic dimensions for gallery images",
      "priority": 6,
      "findingIds": [
        "F-12"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T-07",
      "title": "Split entry-page CSS and remove unused delivery",
      "priority": 7,
      "findingIds": [
        "F-08"
      ],
      "guidanceId": "identify-heavy-scripts",
      "status": "open"
    },
    {
      "id": "T-08",
      "title": "Provide accurate title, description and share metadata",
      "priority": 8,
      "findingIds": [
        "F-13",
        "F-14",
        "F-15"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T-09",
      "title": "Respect system color scheme",
      "priority": 9,
      "findingIds": [
        "F-01"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T-10",
      "title": "Add an offline fallback or clarify non-PWA intent",
      "priority": 10,
      "findingIds": [
        "F-17"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T-11",
      "title": "Migrate reusable layout CSS to logical properties",
      "priority": 11,
      "findingIds": [
        "F-18"
      ],
      "guidanceId": "translator",
      "status": "open"
    },
    {
      "id": "T-12",
      "title": "Optimize the homepage mascot",
      "priority": 12,
      "findingIds": [
        "F-19"
      ],
      "guidanceId": "deliver-optimized-decorative-images",
      "status": "open"
    },
    {
      "id": "T-13",
      "title": "Add progressive view and scroll-state transitions",
      "priority": 13,
      "findingIds": [
        "F-02",
        "F-03"
      ],
      "guidanceId": "same-document-transitions",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 7,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-28T11-50-36-938Z"
}
