{
  "generated_at_utc": "2026-10-03T15:58:26.715Z",
  "environment": {
    "runtime": "v26.7.0",
    "operating_system": "win32",
    "architecture": "x64",
    "network_scope": "loopback fixtures only; no external HTTP requests"
  },
  "suite_count": 5,
  "fixture_assertions": {
    "passed": 47,
    "total": 47,
    "interpretation": "Independent fixture assertions are listed by suite; this sum is not a score or performance benchmark."
  },
  "suites": [
    {
      "name": "Synthetic e-commerce URL policy",
      "checks": 17,
      "passed": 17,
      "result": {
        "as_of": "2026-10-01T12:00:00+03:00",
        "environment": "local synthetic catalog; HTTP fixture, synthetic anchor discovery and XML generation only",
        "tests": [
          {
            "name": "temporary out of stock stays 200 and a sitemap candidate",
            "passed": true
          },
          {
            "name": "removed product returns 410 and is excluded",
            "passed": true
          },
          {
            "name": "explicit successor redirects in one hop to an existing 200 page",
            "passed": true
          },
          {
            "name": "user-only filter is readable with noindex and no forced category canonical",
            "passed": true
          },
          {
            "name": "sorting equivalent has category canonical but no sitemap duplication",
            "passed": true
          },
          {
            "name": "dedicated landing page keeps its own canonical",
            "passed": true
          },
          {
            "name": "indexable parameter URL is not excluded just because it has a query",
            "passed": true
          },
          {
            "name": "parameter ordering duplicate points to the explicit preferred URL",
            "passed": true
          },
          {
            "name": "empty result returns 404 without an error-page redirect",
            "passed": true
          },
          {
            "name": "duplicate filter returns 404 without an error-page redirect",
            "passed": true
          },
          {
            "name": "nonexistent pagination returns 404 without an error-page redirect",
            "passed": true
          },
          {
            "name": "scheduled page is 404 and absent before the fixture publication time",
            "passed": true
          },
          {
            "name": "future lastmod rejects rather than silently publishing a false date",
            "passed": true
          },
          {
            "name": "sitemap has the twelve expected preferred URLs and escapes query separators",
            "passed": true
          },
          {
            "name": "three category pages expose distinct products and self canonicals",
            "passed": true
          },
          {
            "name": "first-page anchor traversal discovers all six product targets without sitemap",
            "passed": true
          },
          {
            "name": "last pagination page has no next link and retains previous navigation",
            "passed": true
          }
        ],
        "limitations": [
          "Not a Google crawl or indexing test",
          "Not a production sitemap or robots configuration",
          "Example policies must be chosen from real catalog and intent evidence"
        ]
      }
    },
    {
      "name": "Loopback-only cache policy",
      "checks": 6,
      "passed": 6,
      "result": {
        "environment": "synthetic HTTP fixture on 127.0.0.1; no public network requests",
        "checks": 6,
        "passed": 6,
        "observations": [
          {
            "path": "/assets/app.abcdef12.js",
            "status": 200,
            "cache": "MISS",
            "contentType": "text/javascript; charset=utf-8",
            "cacheControl": "public, max-age=31536000, immutable"
          },
          {
            "path": "/assets/app.abcdef12.js",
            "status": 200,
            "cache": "HIT",
            "contentType": "text/javascript; charset=utf-8",
            "cacheControl": "public, max-age=31536000, immutable"
          },
          {
            "path": "/assets/hero.123456ab.webp",
            "status": 200,
            "cache": "MISS",
            "contentType": "image/webp",
            "cacheControl": "public, max-age=31536000, immutable"
          },
          {
            "path": "/page.html",
            "status": 200,
            "cache": "BYPASS",
            "contentType": "text/html; charset=utf-8",
            "cacheControl": "no-cache"
          },
          {
            "path": "/page.html",
            "status": 200,
            "cache": "BYPASS",
            "contentType": "text/html; charset=utf-8",
            "cacheControl": "no-cache"
          },
          {
            "path": "/account.html",
            "status": 200,
            "cache": "BYPASS",
            "contentType": "text/html; charset=utf-8",
            "cacheControl": "private, no-store"
          },
          {
            "path": "/assets/app.abcdef12.js?theme=dark",
            "status": 200,
            "cache": "MISS",
            "contentType": "text/javascript; charset=utf-8",
            "cacheControl": "public, max-age=31536000, immutable"
          }
        ],
        "limitation": "Demonstrates cache-policy concepts only; x-local-lab-cache is not a real CDN header and results do not describe any provider or live site."
      }
    },
    {
      "name": "INP helper behavior with an injected clock",
      "checks": 8,
      "passed": 8,
      "result": {
        "checks": 8,
        "tests": [
          {
            "name": "filters matching values without changing input order",
            "passed": true
          },
          {
            "name": "empty input returns an empty result",
            "passed": true
          },
          {
            "name": "invalid items and predicates are rejected",
            "passed": true
          },
          {
            "name": "non-positive and non-finite time budgets are rejected",
            "passed": true
          },
          {
            "name": "asynchronous predicates are rejected",
            "passed": true
          },
          {
            "name": "aborted signal prevents starting the filter",
            "passed": true
          },
          {
            "name": "time budget yields between slices and preserves results",
            "passed": true
          },
          {
            "name": "abort during a yield stops further processing",
            "passed": true
          }
        ],
        "limitation": "Helper behavior only; no browser INP, field data, or performance outcome is measured."
      }
    },
    {
      "name": "Limited robots user-agent group selection",
      "checks": 11,
      "passed": 11,
      "result": {
        "scope": "Limited group selection demonstration; not a Google crawler or full robots parser",
        "passed": 11,
        "cases": [
          {
            "name": "Specific group excludes global rules",
            "result": "passed"
          },
          {
            "name": "Unknown bot receives global rules",
            "result": "passed"
          },
          {
            "name": "Case insensitive token",
            "result": "passed"
          },
          {
            "name": "Longest matching token",
            "result": "passed"
          },
          {
            "name": "Repeated specific groups merge",
            "result": "passed"
          },
          {
            "name": "Consecutive agents share group",
            "result": "passed"
          },
          {
            "name": "No matching group",
            "result": "passed"
          },
          {
            "name": "Sitemap does not split a group",
            "result": "passed"
          },
          {
            "name": "Full header rejected",
            "result": "passed"
          },
          {
            "name": "Unsupported directive rejected",
            "result": "passed"
          },
          {
            "name": "Rule without group rejected",
            "result": "passed"
          }
        ]
      }
    },
    {
      "name": "Local canonical, noindex, and redirect responses",
      "checks": 5,
      "passed": 5,
      "result": {
        "scope": "local HTTP and HTML only; no Google observations",
        "passed": 5,
        "results": [
          {
            "route": "/article/",
            "status": 200,
            "canonical_path": "/article/",
            "noindex": false
          },
          {
            "route": "/article/?utm_source=example",
            "status": 200,
            "canonical_path": "/article/",
            "noindex": false
          },
          {
            "route": "/thank-you/",
            "status": 200,
            "canonical_path": "/thank-you/",
            "noindex": true
          },
          {
            "route": "/page/2/",
            "status": 200,
            "canonical_path": "/page/2/",
            "noindex": false
          },
          {
            "route": "/old/",
            "status": 301,
            "target": "/article/",
            "final_status": 200
          }
        ]
      }
    }
  ],
  "source_sha256": {
    "public/examples/technical-seo-lab-suite.mjs": "6649d8ebdd9ae256e7ad0f8937c0752ee3fb62fd9fffcf3de1e44db3c72cfe8c",
    "public/examples/ecommerce-url-policy-lab.mjs": "5ef50f71221381e3e8fcc44d9f49caed93a0e78b5c1d1bcb9cbec7e4efdecc04",
    "public/examples/cdn-cache-lab.mjs": "71976bc3af89019c249aae48ae2c629a7433aa9312ff13fb059d4d8daa3082a7",
    "public/examples/inp-chunking-check.mjs": "63e3e533c2fb29fb57c0b6223cdd6cc3e656735db7fa19e25358e4d335ef93cf",
    "public/examples/inp-chunking.mjs": "b24280ded12465533f1e1015b6c46d82ec7db9670a69eabce5ea6e15073f626c",
    "public/examples/robots-group-lab.mjs": "ae7058a792c929c8842bf17a61386e3d6f33c0c707c2efb7324e140887c6ecee",
    "public/examples/canonical-lab.mjs": "0e2df07468f3a91ca4e2a1740b343eaeb888839dfa677366f525e7ea1068472f"
  },
  "limitations": [
    "Synthetic examples and local helper tests only; they do not crawl or inspect Seobify production or a client site.",
    "No Googlebot behavior, indexing, ranking, Search Console, traffic, conversion, or AI citation outcome was measured.",
    "No browser INP, Core Web Vitals field data, CPU/network comparison, CDN-provider response, or elapsed-time benchmark was measured.",
    "Each fixture encodes a limited educational contract; it is not a complete parser, crawler, CDN, catalog, or browser implementation.",
    "The e-commerce fixture uses its own explicit fixed as-of date; other suites run at invocation time."
  ]
}
