{
  "url": "https://www.kumanga.com",
  "auditedAt": "2026-07-19T06:31:25.469Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Atomic coverage complete across seven representative paths. Reader content pages beyond one sampled chapter, authenticated account flows, uploads, search and destructive account actions were not covered because they are redundant templates or require credentials.",
  "page": {
    "appType": "mpa",
    "framework": "PHP 5.6 + Bootstrap/jQuery",
    "notes": "Server-rendered Spanish manga catalogue and reader. Representative coverage includes listing, detail, chapter, reading, registration and 404 templates."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "layout-metrics",
    "evaluate-probe",
    "trace",
    "har",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "heap-summary",
    "lighthouse",
    "curl"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "accessibility",
    "forms",
    "optimize-image-priority",
    "security",
    "privacy",
    "same-document-transitions",
    "size-aware-styling",
    "shrinking-header-on-scroll",
    "performance",
    "html",
    "search-hidden-content",
    "translator",
    "autofill-sign-up-form",
    "deliver-optimized-decorative-images",
    "deprioritize-background-fetches"
  ],
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/404.png",
      "caption": "404"
    },
    {
      "type": "other",
      "path": "evidence/comprehensive-probe.json",
      "caption": "comprehensive probe"
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "cookies"
    },
    {
      "type": "screenshot",
      "path": "evidence/detail-desktop.png",
      "caption": "detail desktop"
    },
    {
      "type": "dom",
      "path": "evidence/detail-dom.json",
      "caption": "detail dom"
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-crawler.png",
      "caption": "discoverability crawler"
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-rendered.png",
      "caption": "discoverability rendered"
    },
    {
      "type": "discoverability",
      "path": "evidence/discoverability.json",
      "caption": "discoverability"
    },
    {
      "type": "other",
      "path": "evidence/focus-target-probe.json",
      "caption": "focus target probe"
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "headers"
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.heapsnapshot",
      "caption": "heap baseline"
    },
    {
      "type": "heap",
      "path": "evidence/heap-post.heapsnapshot",
      "caption": "heap post"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "home dark"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "home desktop"
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "home dom"
    },
    {
      "type": "layout",
      "path": "evidence/home-mobile-layout.json",
      "caption": "home mobile layout"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile"
    },
    {
      "type": "other",
      "path": "evidence/home-raw.html",
      "caption": "home raw"
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "home summary"
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "home trace summary"
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "home trace"
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "home"
    },
    {
      "type": "other",
      "path": "evidence/images.json",
      "caption": "images"
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse.json",
      "caption": "lighthouse"
    },
    {
      "type": "screenshot",
      "path": "evidence/listing-desktop.png",
      "caption": "listing desktop"
    },
    {
      "type": "dom",
      "path": "evidence/listing-dom.json",
      "caption": "listing dom"
    },
    {
      "type": "screenshot",
      "path": "evidence/reader-desktop.png",
      "caption": "reader desktop"
    },
    {
      "type": "dom",
      "path": "evidence/reader-dom.json",
      "caption": "reader dom"
    },
    {
      "type": "other",
      "path": "evidence/reader-links.json",
      "caption": "reader links"
    },
    {
      "type": "layout",
      "path": "evidence/reading-mobile-layout.json",
      "caption": "reading mobile layout"
    },
    {
      "type": "screenshot",
      "path": "evidence/reading-view.png",
      "caption": "reading view"
    },
    {
      "type": "other",
      "path": "evidence/recon.json",
      "caption": "recon"
    },
    {
      "type": "other",
      "path": "evidence/reduced-motion.json",
      "caption": "reduced motion"
    },
    {
      "type": "screenshot",
      "path": "evidence/register-desktop.png",
      "caption": "register desktop"
    },
    {
      "type": "dom",
      "path": "evidence/register-dom.json",
      "caption": "register dom"
    },
    {
      "type": "other",
      "path": "evidence/register-form-probe.json",
      "caption": "register form probe"
    },
    {
      "type": "other",
      "path": "evidence/register-validation.json",
      "caption": "register validation"
    },
    {
      "type": "other",
      "path": "evidence/robots-sitemap.txt",
      "caption": "robots sitemap"
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "secrets"
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "trackers"
    }
  ],
  "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": "The dark-emulation screenshot is visually identical to the light capture; computed html color-scheme is normal and the page background remains light.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "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": "Reduced-motion emulation was active; document.getAnimations() returned none, so no non-essential motion persisted.",
      "pathIds": [
        "home"
      ]
    },
    {
      "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": "Representative screenshots, DOM/runtime probes, Lighthouse, network and interaction evidence directly supported respect-user-preferences/respects-contrast on the audited paths.",
      "pathIds": [
        "home"
      ]
    },
    {
      "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": "The CSS/runtime probe found no View Transition declarations on the listing/detail journey.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/comprehensive-probe.json"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "source/CSS inspection for animation-timeline: scroll()/view(); a long-task / scroll-handler probe can flag the main-thread anti-pattern. The model chooses.",
      "evidence": "No scroll-linked animation exists on the representative pages, so there is no scroll-animation implementation to judge.",
      "reason": "No scroll-linked animation exists on the representative pages, so there is no scroll-animation implementation to judge."
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "CSS inspection for scroll-snap / overscroll-behavior / physics-based easing vs custom pointermove listeners. The model chooses.",
      "evidence": "The audited browse, detail, registration and reader flows expose no gesture-driven control.",
      "reason": "The audited browse, detail, registration and reader flows expose no gesture-driven control."
    },
    {
      "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 homepage is about 34,841 CSS px tall on mobile, while screenshots and CSS inspection show static navigation and no progress or scroll-state treatment.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "not-applicable",
      "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": "No tooltip, popover or anchored menu was present in the exercised paths.",
      "reason": "No tooltip, popover or anchored menu was present in the exercised paths."
    },
    {
      "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": "The chapter landing provides clearly labelled INICIAR LECTURA and VER CAPÍTULOS actions, preserving orientation between detail and reader.",
      "pathIds": [
        "home"
      ]
    },
    {
      "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": "Desktop, mobile, detail, registration and reader screenshots show content immediately with no obstructing interstitial.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "DOM/source inspection for popover / <dialog> / <details> vs custom overlay divs with manual dismiss handling. The model chooses.",
      "evidence": "No overlay or transient rich control appeared in the representative paths.",
      "reason": "No overlay or transient rich control appeared in the representative paths."
    },
    {
      "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": "Screenshots show a compact 68 px navigation bar and content-dominant listing/detail layouts.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "layout metrics (scrollWidth vs innerWidth) and a screenshot at an emulated narrow mobile viewport reveal overflow. The model chooses.",
      "evidence": "At 360x800, layout measured scrollWidth 360, clientWidth 360 and zero horizontal overflow on home and reader.",
      "pathIds": [
        "home"
      ]
    },
    {
      "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": "The runtime CSS probe found no @container rules even though cards and update rows appear in multiple column widths.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/comprehensive-probe.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "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": "After programmatically focusing the first control, its computed outline is none; the mobile screenshot confirms the toggle is a primary control.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/focus-target-probe.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "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": "The first viewport identifies popular Spanish manga and exposes title/chapter links; chapter detail labels the reading action.",
      "pathIds": [
        "home"
      ]
    },
    {
      "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": "The exercised home → chapter detail → /manga/leer/725822 journey reached the reading view through real href links.",
      "pathIds": [
        "home",
        "chapter",
        "reader"
      ]
    },
    {
      "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 invalid registration form exposes native required-field messages, and the 404 page gives a clear missing-content explanation and navigation.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "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 at 11.0 s and FCP at 3.4 s; the trace corroborated LCP at 3.34 s under a different run, showing material run-to-run network sensitivity.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/home-trace-summary.json"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "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": "Mobile home CLS was 0.00048 and reader CLS 0.0409, both within the good range.",
      "pathIds": [
        "home"
      ]
    },
    {
      "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": "Trace found one 61 ms long task and only 11 ms total blocking time.",
      "pathIds": [
        "home"
      ]
    },
    {
      "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 recorded 634 requests and 12,928,452 transferred bytes, including 602 image requests and 12,195,824 image bytes; Lighthouse estimates 8,318 KiB cache and 3,255 KiB image-delivery savings.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home.har",
        "evidence/home-summary.json",
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "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 241 KiB unused JavaScript and 61 KiB unused CSS; the DOM lists jQuery, jQuery UI, Bootstrap and multiple plugins loaded globally.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "pass",
      "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": "Images have alt text, registration inputs have associated labels, and Lighthouse did not flag name/role/label failures.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "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 reports the section heading at 3.86:1, Popular badges at 3.68:1, and inline links at 1.51:1 against surrounding text.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "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": "Lighthouse finds skipped heading levels and no main landmark; the focused mobile navigation button computes outline: none.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/focus-target-probe.json"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "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": "Screenshots show readable 16 px body copy and stable wrapping across desktop/mobile, apart from separately reported contrast.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "pass",
      "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": "Viewport permits scaling; 360 px captures reflow without horizontal overflow, and sampled primary targets are generously sized.",
      "pathIds": [
        "home"
      ]
    },
    {
      "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 completed without an errors-in-console failure or uncaught-exception audit failure.",
      "pathIds": [
        "home"
      ]
    },
    {
      "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": "Lighthouse and the images primitive find the logo and all 21 sampled images without explicit width/height; html lacks lang and the page has no main landmark.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/images.json",
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "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 five BFCache failure reasons, including Cache-Control: no-store and WebSocket use, plus DevTools cookie issues.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "a DOM probe reads <title> and meta[name=description]; Lighthouse SEO audits cover the same ground. The model chooses.",
      "evidence": "DOM recon found a descriptive title and Spanish meta description.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "high",
      "method": "a DOM probe for anchor hrefs, viewport meta, and robots; Lighthouse SEO audits corroborate. The model chooses.",
      "evidence": "Links use real href values, viewport metadata is present, robots.txt permits public content, and the no-JS crawler screenshot renders the page.",
      "pathIds": [
        "home"
      ]
    },
    {
      "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": "The live DOM has no canonical URL, /sitemap.xml returns 404, and raw fetch/discoverability encountered a repeated Cloudflare redirect while the no-JS browser view itself remained readable.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/comprehensive-probe.json",
        "evidence/robots-sitemap.txt",
        "evidence/discoverability.json",
        "evidence/discoverability-crawler.png"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "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": "Homepage Open Graph metadata includes URL, type, title, description, image, locale and site name, matching visible content.",
      "pathIds": [
        "home"
      ]
    },
    {
      "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 is used, but headers found no CSP, HSTS or nosniff; PHPSESSID is neither Secure nor HttpOnly and all eight observed cookies use SameSite=None.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "inspect network requests and third-party origins; a probe of analytics/beacon calls. The model chooses.",
      "evidence": "The trackers primitive found Google Analytics and Yandex Metrika, eight third-party origins, and Yandex cookie-sync traffic; Lighthouse recorded 18 third-party cookies.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/trackers.json",
        "evidence/lighthouse.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "not-applicable",
      "confidence": "medium",
      "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 prompt fired, and authentication implementation beyond the public registration surface was not part of the unauthenticated core journey.",
      "reason": "No permission prompt fired, and authentication implementation beyond the public registration surface was not part of the unauthenticated core journey."
    },
    {
      "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": "Headers show X-Frame-Options: SAMEORIGIN, but no Referrer-Policy, Permissions-Policy, CSP frame-ancestors or HSTS.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "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": "The crawler screenshot with JavaScript disabled renders the same core manga titles and links as the browser view.",
      "pathIds": [
        "home"
      ]
    },
    {
      "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, registration and reader screenshots loaded usable stable states; the mobile menu survived ten open/close cycles.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "a probe for a service worker registration and a web app manifest; test behaviour offline. The model chooses.",
      "evidence": "This is a content website rather than an app-like experience; installability/offline application behavior is contextual here.",
      "reason": "This is a content website rather than an app-like experience; installability/offline application behavior is contextual here."
    },
    {
      "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 deliberately invalid path renders a clear Spanish 404 explanation and retains site navigation.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "issues",
      "confidence": "high",
      "method": "a DOM probe for <html lang>/dir and CSS inspection for logical vs physical properties. The model chooses.",
      "evidence": "The rendered DOM has html lang=\"\" and Lighthouse fails html-has-lang, despite Spanish content and metadata.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/comprehensive-probe.json",
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "pass",
      "confidence": "high",
      "method": "source inspection for Intl.* usage vs hand-rolled formatting; a probe of rendered dates/numbers under a different locale. The model chooses.",
      "evidence": "Visible dates and relative times are presented in familiar Spanish forms; no currency or numeric locale flow is present.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "source inspection for time-zone-aware date handling vs naive local Date math. The model chooses.",
      "evidence": "The sampled public content exposes upload dates but no cross-time-zone scheduling or event coordination.",
      "reason": "The sampled public content exposes upload dates but no cross-time-zone scheduling or event coordination."
    },
    {
      "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": "Representative screenshots show direct browsing/reading and registration choices without forced continuity, consent nagging or disguised actions.",
      "pathIds": [
        "home"
      ]
    },
    {
      "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": "Required registration fields use native constraint validation with field-specific fill-in messages after validity checking.",
      "pathIds": [
        "register"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "issues",
      "confidence": "high",
      "method": "source/DOM inspection for autocomplete attributes on form fields; a probe of autofill affordances. The model chooses.",
      "evidence": "All email, username and password fields return an empty autocomplete property, including the repeated password field.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/register-form-probe.json"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "not-applicable",
      "confidence": "medium",
      "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 checkout, subscription, payment or authenticated account-management flow is present in the public core reading journey.",
      "reason": "No checkout, subscription, payment or authenticated account-management flow is present in the public core reading journey."
    },
    {
      "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": "HAR transferred 12.2 MB across 602 image requests; the image probe found no modern-format sampled images, 20 below-fold images without native lazy loading and missing responsive sources.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/images.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": "Trace shows only 11 ms blocking time and no sustained animation; the principal waste is network/media and is reported separately.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "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": "Eight third-party origins and active analytics accompany a 12.9 MB, 634-request load before user interaction.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "source inspection for WebMCP / agentic-tool registration and agent-readable affordances. The model chooses.",
      "evidence": "No declared intent suggests agent-facing transactional capabilities; this emerging check is contextual and not applicable.",
      "reason": "No declared intent suggests agent-facing transactional capabilities; this emerging check is contextual and not applicable."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "source inspection for built-in AI (language model / summariser) usage. The model chooses.",
      "evidence": "The content browsing and reading experience has no inference task where built-in AI would clearly improve the core journey.",
      "reason": "The content browsing and reading experience has no inference task where built-in AI would clearly improve the core journey."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "high",
      "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 ten mobile-menu open/close cycles, heap nodes fell from 301,648 to 293,395 and self size fell from 18,547,872 to 18,020,481 bytes.",
      "pathIds": [
        "home"
      ]
    },
    {
      "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": "Heap summary measured 18.5 MB self size and 301,648 nodes for the large content index, proportionate to its rendered feed.",
      "pathIds": [
        "home"
      ]
    },
    {
      "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": "The repeated-interaction heap did not grow in node or edge count, providing no evidence of accumulating detached DOM/listeners in the tested cycle.",
      "pathIds": [
        "home"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F04",
        "F05"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F08",
        "F09",
        "F10"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F02",
        "F03"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F11",
        "F12"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F14",
        "F15",
        "F16"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F19",
        "F20"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "All checks were judged contextually not applicable to this public manga browsing and reading site."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage and update feed, representing discovery/listing and global chrome.",
      "url": "https://www.kumanga.com",
      "conditions": [
        "desktop",
        "viewport: 360x800",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce",
        "keyboard focus",
        "no JavaScript"
      ],
      "result": "issues"
    },
    {
      "id": "listing",
      "description": "Manga catalogue listing template.",
      "url": "https://www.kumanga.com/mangalist?&page=1",
      "conditions": [
        "desktop"
      ],
      "result": "issues"
    },
    {
      "id": "detail",
      "description": "Manga detail template and chapter selection.",
      "url": "https://www.kumanga.com/manga/14318/el-orco-y-el-elfo-en-espanol",
      "conditions": [
        "desktop"
      ],
      "result": "issues"
    },
    {
      "id": "chapter",
      "description": "Chapter landing and primary INICIAR LECTURA action.",
      "url": "https://www.kumanga.com/manga/c/725822",
      "conditions": [
        "desktop"
      ],
      "result": "pass"
    },
    {
      "id": "reader",
      "description": "Primary reading view reached from the chapter landing.",
      "url": "https://www.kumanga.com/manga/leer/725822",
      "conditions": [
        "desktop",
        "viewport: 360x800"
      ],
      "result": "issues"
    },
    {
      "id": "register",
      "description": "Registration form representing account input and validation.",
      "url": "https://www.kumanga.com/registro",
      "conditions": [
        "desktop",
        "empty required fields"
      ],
      "result": "issues"
    },
    {
      "id": "not-found",
      "description": "Invalid route representing HTTP/error recovery.",
      "url": "https://www.kumanga.com/definitely-not-a-real-page",
      "conditions": [
        "desktop"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "severity": "medium",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "The site does not adapt to the user’s dark colour preference.",
      "evidence": "The dark-emulation screenshot is visually identical to the light capture; computed html color-scheme is normal and the page background remains light.",
      "suggestedFix": "Declare color-scheme and provide preference-driven dark surface, text, link and control tokens.",
      "effort": "small",
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/home-dom.json"
      ],
      "pathId": "home",
      "url": "https://www.kumanga.com"
    },
    {
      "id": "F02",
      "severity": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "confidence": "high",
      "summary": "Text and link treatments fail minimum contrast requirements.",
      "evidence": "Lighthouse reports the section heading at 3.86:1, Popular badges at 3.68:1, and inline links at 1.51:1 against surrounding text.",
      "suggestedFix": "Choose tokens meeting WCAG contrast minimums and add a non-colour link affordance such as an underline.",
      "effort": "small",
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "pathId": "home",
      "url": "https://www.kumanga.com"
    },
    {
      "id": "F03",
      "severity": "medium",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "confidence": "high",
      "summary": "Semantic structure and keyboard focus are incomplete.",
      "evidence": "Lighthouse finds skipped heading levels and no main landmark; the focused mobile navigation button computes outline: none.",
      "suggestedFix": "Add main/header/footer landmarks, use sequential headings, and define a clearly visible :focus-visible style for all controls.",
      "effort": "medium",
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/focus-target-probe.json"
      ],
      "pathId": "home",
      "url": "https://www.kumanga.com"
    },
    {
      "id": "F04",
      "severity": "low",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "size-aware-styling",
      "guidanceCategory": "css",
      "confidence": "high",
      "summary": "Reusable content components only react to global viewport breakpoints.",
      "evidence": "The runtime CSS probe found no @container rules even though cards and update rows appear in multiple column widths.",
      "suggestedFix": "Define containment and use container queries for card typography, metadata and action layout, retaining viewport fallbacks.",
      "effort": "medium",
      "artifacts": [
        "evidence/comprehensive-probe.json",
        "evidence/home-mobile.png"
      ],
      "pathId": "home",
      "url": "https://www.kumanga.com"
    },
    {
      "id": "F05",
      "severity": "medium",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "confidence": "high",
      "summary": "Keyboard focus is not visibly exposed on the navigation toggle.",
      "evidence": "After programmatically focusing the first control, its computed outline is none; the mobile screenshot confirms the toggle is a primary control.",
      "suggestedFix": "Apply :focus-visible outlines with adequate contrast and retain the generous touch target sizes already present.",
      "effort": "small",
      "artifacts": [
        "evidence/focus-target-probe.json",
        "evidence/home-mobile.png"
      ],
      "pathId": "home",
      "url": "https://www.kumanga.com"
    },
    {
      "id": "F06",
      "severity": "low",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "same-document-transitions",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "Primary navigation and state changes use abrupt swaps.",
      "evidence": "The CSS/runtime probe found no View Transition declarations on the listing/detail journey.",
      "suggestedFix": "Progressively enhance route and list/detail state changes with same-document or cross-document View Transitions, with reduced-motion handling.",
      "effort": "medium",
      "artifacts": [
        "evidence/comprehensive-probe.json"
      ],
      "pathId": "home",
      "url": "https://www.kumanga.com"
    },
    {
      "id": "F07",
      "severity": "low",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "shrinking-header-on-scroll",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "The very long update feed provides no scroll-aware orientation.",
      "evidence": "The homepage is about 34,841 CSS px tall on mobile, while screenshots and CSS inspection show static navigation and no progress or scroll-state treatment.",
      "suggestedFix": "Add a restrained scroll-state-aware header or progress cue, preserving content space and reduced-motion preferences.",
      "effort": "medium",
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/home-mobile.png"
      ],
      "pathId": "home",
      "url": "https://www.kumanga.com"
    },
    {
      "id": "F08",
      "severity": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "guidanceCategory": "performance",
      "confidence": "high",
      "summary": "Largest Contentful Paint is far outside the good range.",
      "evidence": "Lighthouse measured LCP at 11.0 s and FCP at 3.4 s; the trace corroborated LCP at 3.34 s under a different run, showing material run-to-run network sensitivity.",
      "suggestedFix": "Prioritise the LCP asset, shorten redirect/document latency, and defer non-critical images, CSS and scripts.",
      "effort": "medium",
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/home-trace-summary.json"
      ],
      "pathId": "home",
      "url": "https://www.kumanga.com"
    },
    {
      "id": "F09",
      "severity": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "performance",
      "confidence": "high",
      "summary": "The homepage transfers an excessive number and weight of image resources.",
      "evidence": "HAR recorded 634 requests and 12,928,452 transferred bytes, including 602 image requests and 12,195,824 image bytes; Lighthouse estimates 8,318 KiB cache and 3,255 KiB image-delivery savings.",
      "suggestedFix": "Paginate or virtualise the feed, lazy-load below-fold media natively, serve responsive modern formats, and set durable cache headers on immutable assets.",
      "effort": "large",
      "artifacts": [
        "evidence/home.har",
        "evidence/home-summary.json",
        "evidence/lighthouse.json"
      ],
      "pathId": "home",
      "url": "https://www.kumanga.com"
    },
    {
      "id": "F10",
      "severity": "medium",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "performance",
      "confidence": "high",
      "summary": "The page ships avoidable legacy and unused CSS/JavaScript.",
      "evidence": "Lighthouse estimates 241 KiB unused JavaScript and 61 KiB unused CSS; the DOM lists jQuery, jQuery UI, Bootstrap and multiple plugins loaded globally.",
      "suggestedFix": "Inventory route-level needs, remove redundant plugins, and conditionally load non-critical code.",
      "effort": "medium",
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/home-dom.json"
      ],
      "pathId": "home",
      "url": "https://www.kumanga.com"
    },
    {
      "id": "F11",
      "severity": "medium",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "confidence": "high",
      "summary": "Document semantics and image dimensions are incomplete.",
      "evidence": "Lighthouse and the images primitive find the logo and all 21 sampled images without explicit width/height; html lacks lang and the page has no main landmark.",
      "suggestedFix": "Add intrinsic dimensions or aspect-ratio, html lang=\"es\", and semantic page landmarks.",
      "effort": "small",
      "artifacts": [
        "evidence/images.json",
        "evidence/lighthouse.json"
      ],
      "pathId": "home",
      "url": "https://www.kumanga.com"
    },
    {
      "id": "F12",
      "severity": "medium",
      "principleId": "follow-best-practices",
      "principleCheckId": "browser-platform-hygiene",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "confidence": "high",
      "summary": "Caching and browser-platform hygiene prevent fast return navigation.",
      "evidence": "Lighthouse reports five BFCache failure reasons, including Cache-Control: no-store and WebSocket use, plus DevTools cookie issues.",
      "suggestedFix": "Remove unnecessary no-store and persistent connection blockers from public content pages and resolve browser Issues panel warnings.",
      "effort": "medium",
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "pathId": "home",
      "url": "https://www.kumanga.com"
    },
    {
      "id": "F13",
      "severity": "medium",
      "principleId": "be-discoverable",
      "principleCheckId": "canonical-and-indexing-signals",
      "guidanceId": "search-hidden-content",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "Indexing signals are incomplete and crawler requests encounter redirect friction.",
      "evidence": "The live DOM has no canonical URL, /sitemap.xml returns 404, and raw fetch/discoverability encountered a repeated Cloudflare redirect while the no-JS browser view itself remained readable.",
      "suggestedFix": "Publish a sitemap, add self-referential canonicals, and configure the edge challenge so standards-compliant crawlers can fetch stable 200 responses.",
      "effort": "small",
      "artifacts": [
        "evidence/comprehensive-probe.json",
        "evidence/robots-sitemap.txt",
        "evidence/discoverability.json",
        "evidence/discoverability-crawler.png"
      ],
      "pathId": "home",
      "url": "https://www.kumanga.com"
    },
    {
      "id": "F14",
      "severity": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "confidence": "high",
      "summary": "Transport and session-cookie protections are incomplete.",
      "evidence": "HTTPS is used, but headers found no CSP, HSTS or nosniff; PHPSESSID is neither Secure nor HttpOnly and all eight observed cookies use SameSite=None.",
      "suggestedFix": "Set a restrictive CSP, HSTS and nosniff; make session cookies Secure, HttpOnly and SameSite=Lax/Strict unless cross-site use is required.",
      "effort": "medium",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "pathId": "home",
      "url": "https://www.kumanga.com"
    },
    {
      "id": "F15",
      "severity": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "guidanceCategory": "privacy",
      "confidence": "high",
      "summary": "Tracking runs immediately with a broad cookie and request footprint.",
      "evidence": "The trackers primitive found Google Analytics and Yandex Metrika, eight third-party origins, and Yandex cookie-sync traffic; Lighthouse recorded 18 third-party cookies.",
      "suggestedFix": "Minimise analytics, load it only after an appropriate consent choice, avoid cookie syncing, and shorten identifiers and retention.",
      "effort": "medium",
      "artifacts": [
        "evidence/trackers.json",
        "evidence/lighthouse.json",
        "evidence/home-summary.json"
      ],
      "pathId": "home",
      "url": "https://www.kumanga.com"
    },
    {
      "id": "F16",
      "severity": "medium",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "confidence": "high",
      "summary": "Several browser-enforced defence policies are absent.",
      "evidence": "Headers show X-Frame-Options: SAMEORIGIN, but no Referrer-Policy, Permissions-Policy, CSP frame-ancestors or HSTS.",
      "suggestedFix": "Set explicit Referrer-Policy and Permissions-Policy and consolidate clickjacking/XSS defence in a tested CSP.",
      "effort": "small",
      "artifacts": [
        "evidence/headers.json"
      ],
      "pathId": "home",
      "url": "https://www.kumanga.com"
    },
    {
      "id": "F17",
      "severity": "medium",
      "principleId": "be-internationalised",
      "principleCheckId": "lang-dir-and-logical-properties",
      "guidanceId": "translator",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "The Spanish document does not declare its language.",
      "evidence": "The rendered DOM has html lang=\"\" and Lighthouse fails html-has-lang, despite Spanish content and metadata.",
      "suggestedFix": "Set lang=\"es\" on every template, add dir where needed, and prefer logical CSS properties in shared layouts.",
      "effort": "trivial",
      "artifacts": [
        "evidence/comprehensive-probe.json",
        "evidence/lighthouse.json"
      ],
      "pathId": "home",
      "url": "https://www.kumanga.com"
    },
    {
      "id": "F18",
      "severity": "medium",
      "principleId": "be-trustworthy",
      "principleCheckId": "trustworthy-input-assistance",
      "guidanceId": "autofill-sign-up-form",
      "guidanceCategory": "forms",
      "confidence": "high",
      "summary": "The registration form omits autocomplete assistance.",
      "evidence": "All email, username and password fields return an empty autocomplete property, including the repeated password field.",
      "suggestedFix": "Add email, username, new-password and appropriate confirmation semantics so password managers and autofill can assist.",
      "effort": "trivial",
      "artifacts": [
        "evidence/register-form-probe.json"
      ],
      "pathId": "register",
      "url": "https://www.kumanga.com/registro"
    },
    {
      "id": "F19",
      "severity": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "deliver-optimized-decorative-images",
      "guidanceCategory": "performance",
      "confidence": "high",
      "summary": "The image-heavy feed is not delivered within a proportionate resource budget.",
      "evidence": "HAR transferred 12.2 MB across 602 image requests; the image probe found no modern-format sampled images, 20 below-fold images without native lazy loading and missing responsive sources.",
      "suggestedFix": "Cap the initial feed, use AVIF/WebP responsive variants, reserve dimensions and lazy-load below-fold assets.",
      "effort": "large",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/images.json"
      ],
      "pathId": "home",
      "url": "https://www.kumanga.com"
    },
    {
      "id": "F20",
      "severity": "medium",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "deprioritize-background-fetches",
      "guidanceCategory": "performance",
      "confidence": "high",
      "summary": "Third-party and background resource use is disproportionate for a content index.",
      "evidence": "Eight third-party origins and active analytics accompany a 12.9 MB, 634-request load before user interaction.",
      "suggestedFix": "Defer non-essential analytics and media, remove redundant trackers, and enforce per-template request and byte budgets.",
      "effort": "medium",
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json"
      ],
      "pathId": "home",
      "url": "https://www.kumanga.com"
    }
  ],
  "taskList": [
    {
      "id": "T01",
      "title": "Cut the homepage image/request payload and fix LCP",
      "priority": 1,
      "findingIds": [
        "F08",
        "F09",
        "F19",
        "F20"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T02",
      "title": "Harden security headers and session cookies",
      "priority": 2,
      "findingIds": [
        "F14",
        "F16"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T03",
      "title": "Minimise consentless analytics and cookie syncing",
      "priority": 3,
      "findingIds": [
        "F15",
        "F20"
      ],
      "guidanceId": "privacy",
      "status": "open"
    },
    {
      "id": "T04",
      "title": "Repair landmarks, headings, focus and contrast",
      "priority": 4,
      "findingIds": [
        "F02",
        "F03",
        "F05",
        "F11",
        "F17"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T05",
      "title": "Add intrinsic image dimensions and remove unused legacy bundles",
      "priority": 5,
      "findingIds": [
        "F10",
        "F11",
        "F12"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T06",
      "title": "Add canonical/sitemap signals and stabilise crawler responses",
      "priority": 6,
      "findingIds": [
        "F13"
      ],
      "guidanceId": "search-hidden-content",
      "status": "open"
    },
    {
      "id": "T07",
      "title": "Add registration autocomplete tokens",
      "priority": 7,
      "findingIds": [
        "F18"
      ],
      "guidanceId": "autofill-sign-up-form",
      "status": "open"
    },
    {
      "id": "T08",
      "title": "Add preference-driven dark mode",
      "priority": 8,
      "findingIds": [
        "F01"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T09",
      "title": "Progressively modernise responsive/navigation transitions",
      "priority": 9,
      "findingIds": [
        "F04",
        "F06",
        "F07"
      ],
      "guidanceId": "size-aware-styling",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 7,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-19T06-31-25-469Z"
}
