{
  "url": "https://fa.wikipedia.org",
  "auditedAt": "2026-07-23T00:23:35.316Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage-complete agentic audit of six representative paths; no source was supplied and no fixes were applied.",
  "page": {
    "appType": "mpa",
    "framework": "MediaWiki / Vector 2022",
    "notes": "Public RTL Persian encyclopedia. Representative coverage includes home, a long featured article, search results, visual editing, 404 recovery, and sign-in. Excludes destructive edits, account creation completion, authenticated preferences, and server 500/offline injection because this was a remote report-only audit."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "layout-metrics",
    "evaluate-probe",
    "trace",
    "har",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "heap-summary",
    "lighthouse"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "component-specific-light-dark-theme",
    "accessibility",
    "adapt-scrollbar-to-contrast-preferences",
    "same-document-transitions",
    "cross-document-transitions",
    "group-element-transitions",
    "faster-spa-view-transitions",
    "scrollytelling",
    "parallax-scroll-effects",
    "scroll-entry-exit-effects",
    "carousel-slide-effects",
    "physics-based-easing",
    "individual-transform-properties",
    "animate-element-entry-exit",
    "animate-to-from-top-layer",
    "animate-to-intrinsic-sizes",
    "dynamic-sibling-animations",
    "interactive-content-reveal",
    "pull-to-reveal",
    "swipe-to-remove",
    "shrinking-header-on-scroll",
    "scroll-progress-indicator",
    "scroll-position-aware-elements",
    "scroll-snap-realtime-feedback",
    "scroll-snap-state-sync",
    "scroll-target-on-load",
    "soft-edge-content-fade",
    "scrollability-affordance-hints",
    "anchor-positioning-tab-underline",
    "position-aware-tooltips",
    "interest-triggered-tooltips",
    "interest-triggered-action-previews",
    "directional-navigation-transitions",
    "carousel-snap-highlights",
    "navigation-drawer",
    "stack-drill-down",
    "persistent-app-tours",
    "persistent-toast-notifications",
    "light-dismiss-a-dialog",
    "platform-controls-dismiss-dialog",
    "declarative-dialog-popover-control",
    "animated-select-picker",
    "branded-select-styling",
    "brand-consistent-forms",
    "custom-select-picker-layouts",
    "rich-media-picker",
    "complex-shapes",
    "shaped-cutouts",
    "overflow-clipping-control",
    "visually-texture-content",
    "apply-webgl-shaders",
    "interactive-content-in-3d-scenes",
    "highlight-text-ranges",
    "prevent-text-wrapping",
    "customize-scrollbar-color-and-thickness",
    "export-html-media-from-canvas",
    "fluid-scaling",
    "calculate-with-intrinsic-sizes",
    "css-layout",
    "size-aware-styling",
    "content-based-styling",
    "child-state-based-styling",
    "design-token-reactivity",
    "dynamic-sibling-styling",
    "form-fields-automatically-fit-contents",
    "improve-text-layout-and-legibility",
    "forms",
    "accessible-error-announcement",
    "required-field-feedback",
    "validate-input-after-interaction",
    "identify-inp-causes",
    "schedule-tasks-by-priority",
    "optimize-preload-priority",
    "improve-next-page-load-performance",
    "interactions-in-complex-layouts",
    "performance",
    "visually-stable-font-fallbacks",
    "break-up-long-tasks",
    "identify-heavy-scripts",
    "optimize-script-priority",
    "defer-rendering-heavy-content",
    "defer-work-until-scroll-ends",
    "optimize-image-priority",
    "conditional-async-dependencies",
    "expose-canvas-content-to-browser-features",
    "move-dom-element-without-losing-state",
    "precise-text-alignment",
    "visually-stable-mixed-fonts",
    "css",
    "html",
    "reduce-style-repetition",
    "security",
    "privacy",
    "batch-analytics-events",
    "full-session-analytics",
    "calculate-total-foreground-time",
    "passkeys",
    "passkey-registration",
    "passkey-authentication",
    "passkey-reauthentication",
    "passkey-conditional-create",
    "passkey-management",
    "flicker-free-client-side-ab-testing",
    "consistent-cross-document-transitions",
    "stabilize-reactive-state",
    "resilient-context-menus-and-nested-dropdowns",
    "persistent-top-layer-ui",
    "detect-initial-visibility-state",
    "sequence-distributed-events",
    "translator",
    "language-detection",
    "support-global-calendar-systems",
    "capture-location-agnostic-data",
    "format-human-readable-durations",
    "manage-recurring-intervals",
    "calculate-event-differentials",
    "coordinate-global-events",
    "model-partial-time-concepts",
    "search-hidden-content",
    "select-menu-interaction",
    "style-parent-with-has",
    "autofill-address-form",
    "autofill-payment-form",
    "autofill-sign-in-form",
    "autofill-sign-up-form",
    "autofill-highlight-inputs",
    "deliver-optimized-decorative-images",
    "resolution-optimized-pseudo-elements",
    "deprioritize-background-fetches",
    "efficient-background-processing",
    "webmcp",
    "agentic-forms",
    "agentic-javascript-tools",
    "language-model",
    "summarizer",
    "custom-button-actions"
  ],
  "config": {
    "loaded": false
  },
  "coverage": {
    "catalogVersion": "modern-web-guidance@0.0.172",
    "catalogChecksum": "sha256:78ccfdb2d483f4c57d9dafed80fd86c6265585a56457c8dcfddc254b80fb44d7",
    "expected": 58,
    "recorded": 58,
    "judged": 58,
    "blocked": 0,
    "notRun": 0,
    "missing": 0,
    "unknown": 0,
    "duplicates": 0,
    "complete": true
  },
  "checkOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-color-scheme",
      "status": "issues",
      "confidence": "high",
      "method": "a screenshot or computed background under an emulated prefers-color-scheme: dark condition will reveal whether surfaces re-tint; the page CSS / a color-scheme declaration is corroborating evidence. The model chooses the method.",
      "evidence": "Dark-media screenshot is pixel-equivalent in appearance to the light capture; body remains rgb(248,249,250) and computed color-scheme is normal.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dark.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F1"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "high",
      "method": "a transition video, or an in-page probe of getAnimations()/computed animation under an emulated prefers-reduced-motion: reduce condition, can show whether motion stops. The model chooses.",
      "evidence": "Under prefers-reduced-motion: reduce, the probe found zero active animations on the home page.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/preferences-probe.json"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "a screenshot under emulated prefers-contrast: more / forced-colors, or an axe/contrast probe, can show whether controls and text survive. The model chooses.",
      "evidence": "The prefers-contrast: more screenshot preserves text, links, icons, and borders, and Lighthouse color-contrast passed.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/home-high-contrast.png",
        "evidence/lighthouse.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "a transition video of a route/state change shows whether it animates; the page source / ::view-transition usage corroborates. The model chooses.",
      "evidence": "CSS inspection across home, article, and search found zero view-transition rules; cross-document article navigation is an abrupt swap.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/article-probe.json"
      ],
      "findingIds": [
        "F2"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and feature/surface applicability review across representative paths",
      "evidence": "The representative pages contain no parallax, scrollytelling, entry/exit reveal, or other scroll-linked animation to implement.",
      "reason": "The representative pages contain no parallax, scrollytelling, entry/exit reveal, or other scroll-linked animation to implement.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and feature/surface applicability review across representative paths",
      "evidence": "No swipe, pull, carousel, or gesture-driven surface exists in the representative reading, search, editing, or sign-in paths.",
      "reason": "No swipe, pull, carousel, or gesture-driven surface exists in the representative reading, search, editing, or sign-in paths.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "a transition video of scrolling, or CSS inspection for scroll-state container queries. The model chooses.",
      "evidence": "The 24,793px article has static chrome and CSS inspection found no scroll-state query or scroll progress treatment.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/article.png",
        "evidence/article-probe.json"
      ],
      "findingIds": [
        "F3"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "issues",
      "confidence": "medium",
      "method": "CSS inspection for anchor-name / position-anchor / position-try on overlays; a screenshot of an open overlay near a viewport edge can show drift. The model chooses.",
      "evidence": "Multiple menu/navigation surfaces are present, while CSS inspection found no anchor positioning or position-try rules.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/home-probe.json"
      ],
      "findingIds": [
        "F4"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "CSS inspection for ::highlight / scroll-marker; a transition video can show whether attention is cued after navigation. The model chooses.",
      "evidence": "Screenshots show selected article tabs with persistent underlines, a table of contents, clear section headings, and blue in-page links.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/article.png"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "pass",
      "confidence": "high",
      "method": "a screenshot on load, or a DOM probe for full-viewport overlays present before interaction. The model chooses.",
      "evidence": "Initial home, article, and search screenshots contain no load-time interstitial or content-obscuring banner.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/article.png"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "DOM/source inspection for popover / <dialog> / <details> vs custom overlay divs with manual dismiss handling. The model chooses.",
      "evidence": "The post-action editor welcome modal is a DIV role=dialog without aria-modal; its actions are anchors with role=button, and no dialog/popover element exists.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/edit-after-10s.png",
        "evidence/edit-modal-probe.json"
      ],
      "findingIds": [
        "F5"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "a screenshot plus layout metrics can show the proportion of the viewport given to chrome vs content. The model chooses.",
      "evidence": "Desktop screenshots devote the dominant region to article or search content; navigation chrome is compact and peripheral.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/article.png"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "issues",
      "confidence": "high",
      "method": "layout metrics (scrollWidth vs innerWidth) and a screenshot at an emulated narrow mobile viewport reveal overflow. The model chooses.",
      "evidence": "At requested viewport 360x800 the page declares meta viewport width=1120, producing a 1120 CSS-pixel desktop canvas scaled to 0.321x and tiny text.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-mobile-layout.json",
        "evidence/article-mobile.png"
      ],
      "findingIds": [
        "F6"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "CSS inspection for @container / container-type; a computed-style probe of the same component in a wide vs narrow container shows whether it adapts. The model chooses.",
      "evidence": "CSS inspection found zero @container rules and the same fixed 1120px composition on home and article mobile captures.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/article-probe.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F7"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "a focus probe (focus an element, read the computed outline) or an axe target-size check; a screenshot of a focused control corroborates. The model chooses.",
      "evidence": "Focus probe shows a visible 2px outline, but Lighthouse target-size fails and 387 of 405 visible home controls measure under 24px on one axis.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F8"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "screenshot the first viewport and key scrolled states; inspect heading structure, nav labels, button text, and visual hierarchy; a task walkthrough can show whether the next action is obvious. The model chooses.",
      "evidence": "Home and article first viewports clearly identify Wikipedia, the article title, reading surface, search, and edit action.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/article.png"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "run the flow manually with screenshots/DOM snapshots at each step; compare expected vs actual path length; inspect form requirements, navigation continuity, and blockers. The model chooses.",
      "evidence": "A query reached a populated search-results page; the edit action loaded the editor and welcome dialog within 10 seconds; sign-in exposed its complete form.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/search-results.png",
        "evidence/edit-after-10s.png",
        "evidence/login-probe.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "exercise network delay/failure, invalid input, empty data and success states; screenshot the state messaging and recovery controls; inspect whether browser history and focus remain sensible. The model chooses.",
      "evidence": "The editor displays a progress state before becoming usable, and the tested HTTP 404 explains the missing title and offers search, backlinks, purge, and deletion-log recovery links.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/edit.png",
        "evidence/missing-page.png",
        "evidence/missing-page-probe.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse reports LCP/CLS/TBT directly and the model may run it; layout metrics + a layout-shift observer + a long-task observer (the evidence primitives) give the same signal first-party. The model chooses.",
      "evidence": "Lighthouse measured LCP 1.8s, CLS 0, and TBT 10ms; all are in the good lab range.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/home-trace-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "high",
      "method": "the layout primitive's CLS observer captures shifts; a transition video of the first seconds shows content jumping. The model chooses.",
      "evidence": "Both mobile layout observations report CLS 0 with no recorded shifts; Lighthouse also reports CLS 0.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/article-mobile-layout.json",
        "evidence/lighthouse.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "the layout primitive records long tasks; a heap summary shows the object population; Lighthouse reports TBT. The model chooses.",
      "evidence": "Lighthouse TBT is 10ms; trace recorded one 171.82ms long task and 121.82ms TBT, with no sustained blocking pattern.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/lighthouse.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "a HAR summary can reveal cache headers, redirects, render-blocking candidates, weight offenders and dependency shape; a trace/Lighthouse insight report can corroborate LCP discovery, render-blocking, font-display and document latency. The model chooses.",
      "evidence": "HAR records a redirect, two parser-blocking stylesheets, and multiple missing cache headers; Lighthouse estimates 980ms redirect savings and flags render blocking and cache lifetimes.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/home.har",
        "evidence/home-summary.json",
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F9"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse/trace/code-coverage style evidence can flag unused JS/CSS, duplicated JavaScript and legacy code; a HAR summary shows third-party byte cost and request count. The model chooses.",
      "evidence": "Lighthouse estimates 92KiB unused JavaScript and 45KiB unused CSS; the largest script transfers 200,189 bytes.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "axe-core (injectable via the evaluate primitive) or Lighthouse's a11y audits enumerate these; a DOM probe of the accessibility-relevant attributes is a first-party alternative. The model chooses.",
      "evidence": "Lighthouse fails aria-required-attr, image-alt, label, and link-name; the home image audit reports 16 missing alt values and the DOM probe finds an unlabelled search field.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/home-images.json",
        "evidence/home-probe.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "axe contrast rules, a Lighthouse contrast audit, or an in-page probe computing contrast ratios from computed colours. The model chooses.",
      "evidence": "Lighthouse color-contrast passes and preference screenshots retain visible foreground/background separation.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/home-high-contrast.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "axe/Lighthouse structural audits; a focus-walk probe (tab through, read activeElement + computed outline) is a first-party alternative. The model chooses.",
      "evidence": "Focus is visibly outlined and landmarks exist, but search results jump from h1 directly to repeated h6 headings and Lighthouse fails definition-list structure and required ARIA attributes.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/search-probe.json",
        "evidence/lighthouse.json",
        "evidence/home-probe.json"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "issues",
      "confidence": "high",
      "method": "a screenshot of body and heading text, plus CSS inspection for text-wrap / text alignment / font fallback handling. The model chooses.",
      "evidence": "Desktop Persian text is readable, but the 360px capture scales the fixed 1120px layout to 0.321x, making article text extremely small.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/article.png",
        "evidence/article-mobile.png"
      ],
      "findingIds": [
        "F6"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse/axe target-size, meta-viewport and media-caption audits are useful signals; screenshots at narrow and zoomed conditions plus DOM/media inspection can corroborate. The model chooses.",
      "evidence": "Meta viewport is fixed at width=1120 and the page shrinks instead of reflowing; Lighthouse target-size fails. No tested path contains audio/video requiring captions.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/article-mobile.png",
        "evidence/article-mobile-layout.json",
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F6",
        "F8"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "high",
      "method": "capture Runtime/Log CDP events, or a probe that reads collected errors; Lighthouse reports this too. The model chooses.",
      "evidence": "Lighthouse errors-in-console audit passes on the entry page.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/lighthouse-details.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "a DOM/source probe for doctype/charset/img dimensions; CSS inspection for repetition; Lighthouse best-practices audits cover the rest. The model chooses.",
      "evidence": "DOCTYPE html, UTF-8, and image aspect ratios are sound, but Lighthouse reports an unsized image and the image audit identifies one missing dimension.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/home-images.json",
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse best-practices audits and DevTools inspector/deprecation signals can surface these; DOM/source probes can verify paste handlers and prompt timing. The model chooses.",
      "evidence": "Lighthouse reports missing source maps for large first-party JavaScript and logged DevTools inspector issues; prompt-on-load and paste-prevention audits pass.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/lighthouse-details.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "issues",
      "confidence": "high",
      "method": "a DOM probe reads <title> and meta[name=description]; Lighthouse SEO audits cover the same ground. The model chooses.",
      "evidence": "Home, article, search, and edit probes have descriptive titles but no meta description; Lighthouse fails meta-description.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/article-probe.json",
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "issues",
      "confidence": "high",
      "method": "a DOM probe for anchor hrefs, viewport meta, and robots; Lighthouse SEO audits corroborate. The model chooses.",
      "evidence": "All 512 home anchors have hrefs and robots permits article crawling, but the viewport is fixed to width=1120 and is not mobile-friendly.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/robots-sitemap.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F6"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "issues",
      "confidence": "high",
      "method": "inspect response status and headers, <link rel=canonical>, hreflang links, robots meta, robots.txt and sitemap.xml; Lighthouse SEO audits cover several of these. The model chooses.",
      "evidence": "Public home and article responses are 200 with canonical URLs and no noindex, while no hreflang links are exposed for localized variants and /sitemap.xml returns 404.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/article-probe.json",
        "evidence/robots-sitemap.json"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "pass",
      "confidence": "high",
      "method": "inspect JSON-LD/microdata and social preview tags against visible content; Lighthouse has a manual structured-data audit, and ad-hoc probes can parse schema.org blocks. The model chooses.",
      "evidence": "Home and article each expose JSON-LD plus Open Graph title/type/image metadata matching visible content.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/article-probe.json",
        "evidence/home-probe.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "inspect response headers / page protocol via an evaluate probe or the network layer; Lighthouse best-practices flags HTTPS and CSP issues. The model chooses.",
      "evidence": "HTTPS, HSTS, nosniff, and CSP are present, but CSP permits unsafe-inline and unsafe-eval; one fawikimwuser-sessionId cookie is not Secure and all seven cookies use SameSite=None.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "pass",
      "confidence": "high",
      "method": "inspect network requests and third-party origins; a probe of analytics/beacon calls. The model chooses.",
      "evidence": "Tracker scan finds no known trackers or external analytics; third-party requests are limited to Wikimedia upload/auth origins and secrets scan finds none.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/trackers.json",
        "evidence/secrets.json",
        "evidence/home-summary.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "pass",
      "confidence": "high",
      "method": "a probe for permission requests fired on load; source inspection for passkey / WebAuthn / navigator.credentials usage in auth flows. The model chooses.",
      "evidence": "No permission request-on-load signal was found; sign-in uses autocomplete=username webauthn and current-password, with WebAuthn/passkey code present.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/login-probe.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "inspect response headers and browser security state; Lighthouse/DevTools security audits can corroborate HSTS, clickjacking, Trusted Types, origin isolation and third-party cookie findings. The model chooses.",
      "evidence": "HSTS and nosniff are strong, but headers lack Referrer-Policy, Permissions-Policy, X-Frame-Options, and the CSP shown has no frame-ancestors directive.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "load with scripting disabled or compare a no-JS fetch of the HTML against the rendered page; check for Baseline-aware fallbacks in source. The model chooses.",
      "evidence": "Discoverability captures report 100% raw-HTML content coverage for home and article, with title and h1 present without JavaScript.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/home-discoverability.json",
        "evidence/article-discoverability.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "high",
      "method": "exercise menus near viewport edges with a screenshot; a probe of async/visibility behaviour. The model chooses.",
      "evidence": "Navigation/menu chrome and the editor dialog remain within the viewport in exercised states; repeated menu toggling returns to aria-expanded=false with unchanged DOM count.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/edit-after-10s.png",
        "evidence/article-memory-metrics.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and feature/surface applicability review across representative paths",
      "evidence": "Persian Wikipedia is a public content MPA rather than an installable app; offline installability is contextual and was not presented as a product goal.",
      "reason": "Persian Wikipedia is a public content MPA rather than an installable app; offline installability is contextual and was not presented as a product goal.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "simulate failed fetches/offline mode or inspect representative 404/500 routes; screenshots and DOM snapshots of error/loading/empty states show whether recovery is possible. The model chooses.",
      "evidence": "A real 404 returns HTTP 404 with a clear explanation and actionable search, backlink, purge, and deletion-log recovery options.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/missing-page.png",
        "evidence/missing-page-probe.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "pass",
      "confidence": "high",
      "method": "a DOM probe for <html lang>/dir and CSS inspection for logical vs physical properties. The model chooses.",
      "evidence": "All representative pages declare lang=fa and dir=rtl; screenshots demonstrate correct RTL ordering and probes find logical CSS properties in use.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/article-probe.json",
        "evidence/article.png"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "pass",
      "confidence": "medium",
      "method": "source inspection for Intl.* usage vs hand-rolled formatting; a probe of rendered dates/numbers under a different locale. The model chooses.",
      "evidence": "Persian interface labels and article numbers/dates are localized, and language-aware server-rendered markup is consistent across representative paths.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/article.png",
        "evidence/article-probe.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and feature/surface applicability review across representative paths",
      "evidence": "The representative encyclopedia, search, edit, and sign-in pages do not coordinate scheduled events or accept time-zone-sensitive input.",
      "reason": "The representative encyclopedia, search, edit, and sign-in pages do not coordinate scheduled events or accept time-zone-sensitive input.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "pass",
      "confidence": "high",
      "method": "a screenshot of consent/upsell/cancel flows; source inspection for declarative button actions vs misleading controls. The model chooses.",
      "evidence": "No consent wall, confirmshaming, forced continuity, disguised advertising, or nagging upsell appears in the tested public paths.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/login-probe.json"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "pass",
      "confidence": "high",
      "method": "exercise a form, submit invalid input, and observe timing and clarity of errors via a screenshot or a :user-invalid / aria-invalid probe. The model chooses.",
      "evidence": "No-result search and missing-page states explain outcomes without blame and offer clear recovery; editor loading gives visible progress.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/search-results.png",
        "evidence/missing-page.png"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "pass",
      "confidence": "high",
      "method": "source/DOM inspection for autocomplete attributes on form fields; a probe of autofill affordances. The model chooses.",
      "evidence": "Sign-in fields are labelled and use autocomplete=username webauthn and current-password; search fields use the search input type.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/login-probe.json",
        "evidence/search-probe.json"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "pass",
      "confidence": "high",
      "method": "walkthrough checkout/subscription/auth/account flows when present; screenshot pricing, confirmation, cancellation and reauthentication states; inspect passkey/autocomplete support for sign-in and payment. The model chooses.",
      "evidence": "No commercial flow exists; the relevant sign-in flow clearly labels credentials, offers password recovery/account creation, and supports WebAuthn discovery.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/login-probe.json"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "inspect transferred image bytes vs displayed size; source inspection for modern formats and resolution handling. The model chooses.",
      "evidence": "Image audit reports 30 legacy-format images, 26 below-fold images without loading=lazy, one oversized image, and one missing srcset.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/home-images.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "pass",
      "confidence": "high",
      "method": "a long-task / network probe for background fetches and processing while idle or backgrounded. The model chooses.",
      "evidence": "The 551,504-byte page has no known tracker workload, no autoplay media, and only one load long task; background work appears proportionate to the encyclopedia surface.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home-trace-summary.json",
        "evidence/trackers.json"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "pass",
      "confidence": "high",
      "method": "a HAR summary shows third-party bytes, font/media weight and caching; screenshots/video reveal autoplay and decorative media; trace/layout evidence shows whether media/animation keeps work running. The model chooses.",
      "evidence": "Third-party transfer is 168,028 bytes and confined to Wikimedia image/auth origins; no audio, video, or autoplay media is present.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home-probe.json"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and feature/surface applicability review across representative paths",
      "evidence": "No declared agent-facing product intent or transactional agent surface was found; this emerging capability is contextual.",
      "reason": "No declared agent-facing product intent or transactional agent surface was found; this emerging capability is contextual.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and feature/surface applicability review across representative paths",
      "evidence": "No declared on-device AI experience or inference task was found; this emerging capability is contextual.",
      "reason": "No declared on-device AI experience or inference task was found; this emerging capability is contextual.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "medium",
      "method": "compare heap snapshots for retained growth - a baseline, then one taken after repeating the interaction with `--interact` about 10x (the memory-tracer methodology: baseline -> repeat -> post -> compare). Performance.getMetrics (JSHeapUsedSize, Nodes) across the same before/after window is corroborat",
      "evidence": "After 20 menu toggles, DOM nodes remain exactly 7,332 and the menu returns closed; heap node count changes only 344,279→344,788 and closures 6,286→6,283.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/article-heap-baseline.json",
        "evidence/article-heap-post.json",
        "evidence/article-memory-metrics.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "high",
      "method": "a single `heap` summary's totals (nodeCount, totalSelfSizeBytes, constructor population) plus Performance.getMetrics (Nodes, JSHeapUsedSize) give the current footprint to judge against the page's purpose. Chrome DevTools MCP heap snapshots and memlab snapshot analysis can provide the same memory dis",
      "evidence": "The long 62,962-character article uses a 23.5MB snapshot self-size and 7,332 live DOM elements, proportionate to a large server-rendered article.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/article-heap-baseline.json",
        "evidence/article-probe.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "high",
      "method": "the `heap` summary by constructor (Detached* nodes) compared across a before/after pair shows a growing detached-DOM population; an `evaluate` probe can sample listener/timer counts (e.g. getEventListeners-style counting, or instrumenting addEventListener/setInterval) before and after the repeated i",
      "evidence": "Heap constructor summaries expose no Detached* population; closure count decreases by three and live DOM count is unchanged after 20 toggles.",
      "pathIds": [
        "home",
        "article",
        "search",
        "edit",
        "missing",
        "login"
      ],
      "artifacts": [
        "evidence/article-heap-baseline.json",
        "evidence/article-heap-post.json",
        "evidence/article-memory-metrics.json"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F1"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F2"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F3",
        "F4"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F5"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F6",
        "F7",
        "F8"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F9",
        "F10"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F11",
        "F12",
        "F6",
        "F8"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F13",
        "F14"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F15",
        "F6",
        "F16"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F17",
        "F18"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "All checks were judged contextual and not applicable to the observed product intent and surfaces."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Entry page and featured-content hub; covers purpose, navigation, preferences, performance, network, metadata, and global chrome.",
      "url": "https://fa.wikipedia.org",
      "conditions": [
        "desktop",
        "viewport: 360x800",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce",
        "prefers-contrast: more"
      ],
      "result": "issues"
    },
    {
      "id": "article",
      "description": "Long featured encyclopedia article template; covers reading, headings, infobox, scroll/navigation, resilience, memory, and mobile layout.",
      "url": "https://fa.wikipedia.org/wiki/%D8%AF%D8%A7%D8%B9%DB%8C_%DA%A9%D8%A8%DB%8C%D8%B1",
      "conditions": [
        "desktop",
        "viewport: 360x800",
        "repeated menu toggle x20",
        "no-JavaScript crawler"
      ],
      "result": "issues"
    },
    {
      "id": "search",
      "description": "Search results and advanced filters; covers core discovery flow, forms, empty-ish query recovery, and result structure.",
      "url": "https://fa.wikipedia.org/w/index.php?search=%D8%AA%D9%87%D8%B1%D8%A7%D9%86+%D8%A2%D8%B2%D9%85%D9%88%D9%86+%D9%86%D8%A7%D8%B4%D9%86%D8%A7%D8%AE%D8%AA%D9%87&title=%D9%88%DB%8C%DA%98%D9%87%3A%D8%AC%D8%B3%D8%AA%D8%AC%D9%88",
      "conditions": [
        "desktop"
      ],
      "result": "issues"
    },
    {
      "id": "edit",
      "description": "Primary contribution flow through VisualEditor loading and welcome modal; covers state communication, overlays, and flow completion without submitting changes.",
      "url": "https://fa.wikipedia.org/w/index.php?title=%D8%AF%D8%A7%D8%B9%DB%8C_%DA%A9%D8%A8%DB%8C%D8%B1&action=edit",
      "conditions": [
        "initial",
        "after 10 seconds"
      ],
      "result": "issues"
    },
    {
      "id": "missing",
      "description": "Real HTTP 404 article route; covers error explanation and recovery options.",
      "url": "https://fa.wikipedia.org/wiki/Web_uplift_nonexistent_20260723",
      "conditions": [
        "desktop"
      ],
      "result": "pass"
    },
    {
      "id": "login",
      "description": "Central sign-in form; covers labels, autocomplete, permission timing, account recovery, and WebAuthn support without submitting credentials.",
      "url": "https://auth.wikimedia.org/fawiki/wiki/%D9%88%DB%8C%DA%98%D9%87:%D9%88%D8%B1%D9%88%D8%AF_%D8%A8%D9%87_%D8%B3%D8%A7%D9%85%D8%A7%D9%86%D9%87",
      "conditions": [
        "unauthenticated"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F1",
      "severity": "medium",
      "confidence": "high",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "summary": "System dark preference is ignored.",
      "evidence": "The light and prefers-color-scheme:dark screenshots remain visually identical; computed body background stays rgb(248,249,250) and color-scheme is normal.",
      "suggestedFix": "Adopt color-scheme: light dark and preference-driven tokens/light-dark() while retaining the existing explicit theme picker.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dark.png",
        "evidence/home-dom.json"
      ],
      "effort": "medium",
      "pathId": "home"
    },
    {
      "id": "F2",
      "severity": "low",
      "confidence": "high",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "cross-document-transitions",
      "summary": "Article navigation swaps abruptly.",
      "evidence": "CSS probes found zero view-transition rules on home, article, and search templates.",
      "suggestedFix": "Add @view-transition { navigation:auto } for eligible same-origin pages, stable view-transition-name values, and a reduced-motion fallback.",
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/article-probe.json"
      ],
      "effort": "small",
      "pathId": "home"
    },
    {
      "id": "F3",
      "severity": "low",
      "confidence": "high",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "scroll-progress-indicator",
      "summary": "Long articles provide no scroll-state guidance.",
      "evidence": "The representative article is 24,793px tall, while CSS inspection found no scroll-state query or progress treatment.",
      "suggestedFix": "Add a lightweight CSS scroll progress indicator or scroll-state-aware article chrome that does not obscure content.",
      "artifacts": [
        "evidence/article.png",
        "evidence/article-probe.json"
      ],
      "effort": "small",
      "pathId": "article"
    },
    {
      "id": "F4",
      "severity": "low",
      "confidence": "high",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "anchored-positioning",
      "guidanceId": "position-aware-tooltips",
      "summary": "Menus do not use modern anchored positioning.",
      "evidence": "Navigation/menu surfaces exist, but CSS inspection found no anchor positioning or position-try rules.",
      "suggestedFix": "Migrate edge-sensitive menus/tooltips to CSS anchor positioning with position-try fallbacks, preserving current robust fallback behavior.",
      "artifacts": [
        "evidence/home-probe.json"
      ],
      "effort": "medium",
      "pathId": "home"
    },
    {
      "id": "F5",
      "severity": "medium",
      "confidence": "high",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "declarative-dialog-popover-control",
      "summary": "The editor welcome modal is custom rather than a modal dialog primitive.",
      "evidence": "Delayed editor probe finds DIV role=dialog with no aria-modal; actions are anchors with role=button, and no dialog/popover element is used.",
      "suggestedFix": "Use <dialog> with showModal(), native buttons, a programmatic name, focus return, Escape handling, and light-dismiss only if appropriate.",
      "artifacts": [
        "evidence/edit-after-10s.png",
        "evidence/edit-modal-probe.json"
      ],
      "effort": "medium",
      "pathId": "edit"
    },
    {
      "id": "F6",
      "severity": "high",
      "confidence": "high",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "responsive-no-horizontal-scroll",
      "guidanceId": "fluid-scaling",
      "summary": "Mobile pages shrink a fixed 1120px desktop canvas instead of reflowing.",
      "evidence": "At 360x800, meta viewport is width=1120 and Chrome scales the full desktop page to 0.321x; text and controls become extremely small on home and article.",
      "suggestedFix": "Use width=device-width, initial-scale=1; rebuild the layout with intrinsic/fluid sizing and responsive content ordering, then verify at 320-400 CSS px and 200% zoom.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-mobile-layout.json",
        "evidence/article-mobile.png",
        "evidence/article-mobile-layout.json"
      ],
      "effort": "large",
      "pathId": "home"
    },
    {
      "id": "F7",
      "severity": "medium",
      "confidence": "high",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "size-aware-styling",
      "summary": "Reused components have no container-level adaptation.",
      "evidence": "CSS inspection reports zero @container rules while sidebars, infoboxes, and preference panels retain desktop composition in the mobile capture.",
      "suggestedFix": "Give reusable panels containment and use size container queries to collapse/reorder at available component width, with viewport fallbacks.",
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/article-probe.json",
        "evidence/article-mobile.png"
      ],
      "effort": "large",
      "pathId": "article"
    },
    {
      "id": "F8",
      "severity": "high",
      "confidence": "high",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "summary": "Most interactive targets are too small for touch.",
      "evidence": "Lighthouse target-size fails; the probe measures 387 of 405 visible home controls below 24px on at least one axis, although keyboard focus has a visible 2px outline.",
      "suggestedFix": "Increase target boxes and spacing toward WCAG 2.2 target-size guidance without enlarging inline text itself; retain the visible :focus-visible treatment.",
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/lighthouse.json"
      ],
      "effort": "large",
      "pathId": "home"
    },
    {
      "id": "F9",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-preload-priority",
      "summary": "Delivery has avoidable redirect, cache, and render-blocking cost.",
      "evidence": "HAR records a redirect and parser-blocking stylesheets; Lighthouse estimates 980ms redirect savings and flags cache lifetimes, document latency, render blocking, and dependency chains.",
      "suggestedFix": "Link directly to the canonical main page, tighten critical CSS, defer noncritical modules, and set effective immutable/revalidation caching for versioned assets and thumbnails.",
      "artifacts": [
        "evidence/home.har",
        "evidence/home-summary.json",
        "evidence/lighthouse.json"
      ],
      "effort": "medium",
      "pathId": "home"
    },
    {
      "id": "F10",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "summary": "The entry page ships substantial unused CSS and JavaScript.",
      "evidence": "Lighthouse estimates 92KiB unused JavaScript and 45KiB unused CSS; one bundled script transfers 200,189 bytes.",
      "suggestedFix": "Split MediaWiki modules by actual page need, conditionally load editing/notice/analytics features, and trim unused style modules from the home template.",
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/home-summary.json"
      ],
      "effort": "large",
      "pathId": "home"
    },
    {
      "id": "F11",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "summary": "Accessible names, roles, labels, and alternatives are incomplete.",
      "evidence": "Lighthouse fails required ARIA attributes, image alt, labels, and link names; the image audit reports 16 missing alt values and the DOM probe finds an unlabelled search input.",
      "suggestedFix": "Fix each Lighthouse node: add meaningful or empty alt as appropriate, label every field, give links discernible names, and satisfy required ARIA relationships or use native semantics.",
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/home-images.json",
        "evidence/home-probe.json"
      ],
      "effort": "large",
      "pathId": "home"
    },
    {
      "id": "F12",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "summary": "Some document structures do not express a logical reading hierarchy.",
      "evidence": "Search results jump from h1 to repeated h6 headings; Lighthouse also fails definition-list structure and required ARIA attributes.",
      "suggestedFix": "Use sequential heading levels for advanced-search groups and valid dt/dd grouping; prefer native structural semantics over repaired ARIA.",
      "artifacts": [
        "evidence/search-probe.json",
        "evidence/lighthouse.json"
      ],
      "effort": "medium",
      "pathId": "search"
    },
    {
      "id": "F13",
      "severity": "low",
      "confidence": "high",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "optimize-image-priority",
      "summary": "At least one image lacks intrinsic dimensions.",
      "evidence": "Lighthouse unsized-images is 0.5 and the image primitive reports one missing width/height pair, despite CLS currently measuring zero.",
      "suggestedFix": "Emit width and height (or an equivalent reserved aspect-ratio) for every image from known thumbnail metadata.",
      "artifacts": [
        "evidence/home-images.json",
        "evidence/lighthouse.json"
      ],
      "effort": "small",
      "pathId": "home"
    },
    {
      "id": "F14",
      "severity": "low",
      "confidence": "high",
      "principleId": "follow-best-practices",
      "principleCheckId": "browser-platform-hygiene",
      "guidanceId": "html",
      "summary": "Debugging/platform hygiene is incomplete.",
      "evidence": "Lighthouse reports missing source maps for large first-party JavaScript and DevTools inspector issues.",
      "suggestedFix": "Publish access-controlled source maps for versioned production bundles and resolve the concrete Inspector Issues entries in CI/browser smoke tests.",
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/lighthouse-details.json"
      ],
      "effort": "medium",
      "pathId": "home"
    },
    {
      "id": "F15",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-discoverable",
      "principleCheckId": "title-and-description",
      "guidanceId": "html",
      "summary": "Public pages omit meta descriptions.",
      "evidence": "Home, article, search, and edit probes all return description:null; Lighthouse fails meta-description.",
      "suggestedFix": "Generate concise, page-specific descriptions from the home purpose and article lead, while keeping search/edit noindex behavior intentional.",
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/article-probe.json",
        "evidence/lighthouse.json"
      ],
      "effort": "medium",
      "pathId": "home"
    },
    {
      "id": "F16",
      "severity": "low",
      "confidence": "high",
      "principleId": "be-discoverable",
      "principleCheckId": "canonical-and-indexing-signals",
      "guidanceId": "html",
      "summary": "Localized article indexing signals are incomplete.",
      "evidence": "Canonical and status signals are correct, but public pages expose zero hreflang links and the conventional /sitemap.xml endpoint returns 404.",
      "suggestedFix": "Expose reciprocal hreflang links for available language editions and advertise the existing REST sitemap endpoint through a conventional sitemap index or robots.txt Sitemap directive.",
      "artifacts": [
        "evidence/article-probe.json",
        "evidence/robots-sitemap.json"
      ],
      "effort": "medium",
      "pathId": "article"
    },
    {
      "id": "F17",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "summary": "CSP and cookie posture leave avoidable exposure.",
      "evidence": "CSP permits unsafe-inline and unsafe-eval; cookies audit finds fawikimwuser-sessionId without Secure and all seven observed cookies with SameSite=None.",
      "suggestedFix": "Move toward nonce/hash-based CSP without unsafe-eval, mark all session identifiers Secure, and use Lax/Strict unless a documented cross-site flow requires None.",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "effort": "large",
      "pathId": "home"
    },
    {
      "id": "F18",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "summary": "Several browser-enforced defensive policies are absent.",
      "evidence": "Headers lack Referrer-Policy, Permissions-Policy, X-Frame-Options, and the observed CSP does not include frame-ancestors.",
      "suggestedFix": "Add a restrictive frame-ancestors directive, strict-origin-when-cross-origin (or stricter) Referrer-Policy, and a minimal Permissions-Policy; retain HSTS and nosniff.",
      "artifacts": [
        "evidence/headers.json"
      ],
      "effort": "small",
      "pathId": "home"
    },
    {
      "id": "F19",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "deliver-optimized-decorative-images",
      "summary": "Image delivery leaves avoidable bytes and requests.",
      "evidence": "Image audit reports 30 legacy formats, 26 below-fold images without lazy loading, one oversized image, and one missing srcset.",
      "suggestedFix": "Serve negotiated AVIF/WebP where suitable, lazy-load below-fold images, preserve dimensions, and emit responsive srcset/sizes from thumbnail metadata.",
      "artifacts": [
        "evidence/home-images.json",
        "evidence/home-summary.json"
      ],
      "effort": "medium",
      "pathId": "home"
    }
  ],
  "taskList": [
    {
      "id": "T1",
      "title": "Use width=device-width, initial-scale=1; rebuild the layout with intrinsic/fluid sizing and responsive content ordering, then verify at 320-400 CSS px and 200% zoom.",
      "priority": 1,
      "findingIds": [
        "F6"
      ],
      "guidanceId": "fluid-scaling",
      "status": "open"
    },
    {
      "id": "T2",
      "title": "Fix each Lighthouse node: add meaningful or empty alt as appropriate, label every field, give links discernible names, and satisfy required ARIA relationships or use native semantics.",
      "priority": 2,
      "findingIds": [
        "F11"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T3",
      "title": "Move toward nonce/hash-based CSP without unsafe-eval, mark all session identifiers Secure, and use Lax/Strict unless a documented cross-site flow requires None.",
      "priority": 3,
      "findingIds": [
        "F17"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T4",
      "title": "Increase target boxes and spacing toward WCAG 2.2 target-size guidance without enlarging inline text itself; retain the visible :focus-visible treatment.",
      "priority": 4,
      "findingIds": [
        "F8"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T5",
      "title": "Link directly to the canonical main page, tighten critical CSS, defer noncritical modules, and set effective immutable/revalidation caching for versioned assets and thumbnails.",
      "priority": 5,
      "findingIds": [
        "F9"
      ],
      "guidanceId": "optimize-preload-priority",
      "status": "open"
    },
    {
      "id": "T6",
      "title": "Split MediaWiki modules by actual page need, conditionally load editing/notice/analytics features, and trim unused style modules from the home template.",
      "priority": 6,
      "findingIds": [
        "F10"
      ],
      "guidanceId": "identify-heavy-scripts",
      "status": "open"
    },
    {
      "id": "T7",
      "title": "Use <dialog> with showModal(), native buttons, a programmatic name, focus return, Escape handling, and light-dismiss only if appropriate.",
      "priority": 7,
      "findingIds": [
        "F5"
      ],
      "guidanceId": "declarative-dialog-popover-control",
      "status": "open"
    },
    {
      "id": "T8",
      "title": "Adopt color-scheme: light dark and preference-driven tokens/light-dark() while retaining the existing explicit theme picker.",
      "priority": 8,
      "findingIds": [
        "F1"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T9",
      "title": "Generate concise, page-specific descriptions from the home purpose and article lead, while keeping search/edit noindex behavior intentional.",
      "priority": 9,
      "findingIds": [
        "F15"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T10",
      "title": "Add a restrictive frame-ancestors directive, strict-origin-when-cross-origin (or stricter) Referrer-Policy, and a minimal Permissions-Policy; retain HSTS and nosniff.",
      "priority": 10,
      "findingIds": [
        "F18"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T11",
      "title": "Serve negotiated AVIF/WebP where suitable, lazy-load below-fold images, preserve dimensions, and emit responsive srcset/sizes from thumbnail metadata.",
      "priority": 11,
      "findingIds": [
        "F19"
      ],
      "guidanceId": "deliver-optimized-decorative-images",
      "status": "open"
    },
    {
      "id": "T12",
      "title": "Give reusable panels containment and use size container queries to collapse/reorder at available component width, with viewport fallbacks.",
      "priority": 12,
      "findingIds": [
        "F7"
      ],
      "guidanceId": "size-aware-styling",
      "status": "open"
    },
    {
      "id": "T13",
      "title": "Use sequential heading levels for advanced-search groups and valid dt/dd grouping; prefer native structural semantics over repaired ARIA.",
      "priority": 13,
      "findingIds": [
        "F12"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T14",
      "title": "Expose reciprocal hreflang links for available language editions and advertise the existing REST sitemap endpoint through a conventional sitemap index or robots.txt Sitemap directive.",
      "priority": 14,
      "findingIds": [
        "F16"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T15",
      "title": "Add @view-transition { navigation:auto } for eligible same-origin pages, stable view-transition-name values, and a reduced-motion fallback.",
      "priority": 15,
      "findingIds": [
        "F2"
      ],
      "guidanceId": "cross-document-transitions",
      "status": "open"
    },
    {
      "id": "T16",
      "title": "Add a lightweight CSS scroll progress indicator or scroll-state-aware article chrome that does not obscure content.",
      "priority": 16,
      "findingIds": [
        "F3"
      ],
      "guidanceId": "scroll-progress-indicator",
      "status": "open"
    },
    {
      "id": "T17",
      "title": "Migrate edge-sensitive menus/tooltips to CSS anchor positioning with position-try fallbacks, preserving current robust fallback behavior.",
      "priority": 17,
      "findingIds": [
        "F4"
      ],
      "guidanceId": "position-aware-tooltips",
      "status": "open"
    },
    {
      "id": "T18",
      "title": "Emit width and height (or an equivalent reserved aspect-ratio) for every image from known thumbnail metadata.",
      "priority": 18,
      "findingIds": [
        "F13"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T19",
      "title": "Publish access-controlled source maps for versioned production bundles and resolve the concrete Inspector Issues entries in CI/browser smoke tests.",
      "priority": 19,
      "findingIds": [
        "F14"
      ],
      "guidanceId": "html",
      "status": "open"
    }
  ],
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/article-discoverability-crawler.png",
      "caption": "article discoverability crawler",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/article-discoverability-rendered.png",
      "caption": "article discoverability rendered",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/article-discoverability.json",
      "caption": "article discoverability",
      "findingIds": []
    },
    {
      "type": "dom",
      "path": "evidence/article-dom.json",
      "caption": "article dom",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/article-heap-baseline.json",
      "caption": "article heap baseline",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/article-heap-post.json",
      "caption": "article heap post",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/article-memory-metrics.json",
      "caption": "article memory metrics",
      "findingIds": []
    },
    {
      "type": "layout",
      "path": "evidence/article-mobile-layout.json",
      "caption": "article mobile layout",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F6"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/article-mobile.png",
      "caption": "article mobile",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F6",
        "F7"
      ]
    },
    {
      "type": "other",
      "path": "evidence/article-probe.json",
      "caption": "article probe",
      "findingIds": [
        "F2",
        "F3",
        "F7",
        "F15",
        "F16"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/article.png",
      "caption": "article",
      "findingIds": [
        "F3"
      ]
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "cookies",
      "findingIds": [
        "F17"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/edit-after-10s.png",
      "caption": "edit after 10s",
      "findingIds": [
        "F5"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/edit-dom.json",
      "caption": "edit dom",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/edit-modal-probe.json",
      "caption": "edit modal probe",
      "findingIds": [
        "F5"
      ]
    },
    {
      "type": "other",
      "path": "evidence/edit-probe.json",
      "caption": "edit probe",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/edit.png",
      "caption": "edit",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "headers",
      "findingIds": [
        "F17",
        "F18"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "home dark",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F1"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "home desktop",
      "findingIds": [
        "F1"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-crawler.png",
      "caption": "home discoverability crawler",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-rendered.png",
      "caption": "home discoverability rendered",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/home-discoverability.json",
      "caption": "home discoverability",
      "findingIds": []
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "home dom",
      "findingIds": [
        "F1"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-high-contrast.png",
      "caption": "home high contrast",
      "condition": "prefers-contrast: more",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-images.json",
      "caption": "home images",
      "findingIds": [
        "F11",
        "F13",
        "F19"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/home-mobile-layout.json",
      "caption": "home mobile layout",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F6"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F6"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-probe.json",
      "caption": "home probe",
      "findingIds": [
        "F2",
        "F4",
        "F7",
        "F8",
        "F11",
        "F15"
      ]
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "home summary",
      "findingIds": [
        "F9",
        "F10",
        "F19"
      ]
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "home trace summary",
      "findingIds": []
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "home",
      "findingIds": [
        "F9"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-details.json",
      "caption": "lighthouse details",
      "findingIds": [
        "F14"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse.json",
      "caption": "lighthouse",
      "findingIds": [
        "F8",
        "F9",
        "F10",
        "F11",
        "F12",
        "F13",
        "F14",
        "F15"
      ]
    },
    {
      "type": "other",
      "path": "evidence/login-probe.json",
      "caption": "login probe",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/missing-page-probe.json",
      "caption": "missing page probe",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/missing-page.png",
      "caption": "missing page",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/preferences-probe.json",
      "caption": "preferences probe",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/recon.json",
      "caption": "recon",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/robots-sitemap.json",
      "caption": "robots sitemap",
      "findingIds": [
        "F16"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/search-dom.json",
      "caption": "search dom",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/search-probe.json",
      "caption": "search probe",
      "findingIds": [
        "F12"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/search-results.png",
      "caption": "search results",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/search.png",
      "caption": "search",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "secrets",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "trackers",
      "findingIds": []
    }
  ],
  "budget": {
    "pathCount": 6,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-23T00-23-35-316Z"
}
