{
  "schema": 1,
  "subject": "Cedar Thread Tailoring",
  "scope": "Four local static pages; no hosted HTTPS or backend audit.",
  "pages": [
    "/",
    "/services.html",
    "/contact.html",
    "/privacy.html"
  ],
  "builds": {
    "first": {
      "label": "First build",
      "passed": 2,
      "total": 12,
      "checks": [
        {
          "id": "strict-transport-security",
          "title": "strict-transport-security",
          "pass": false,
          "evidence": "Not sent on any of the 4 pages."
        },
        {
          "id": "content-security-policy",
          "title": "content-security-policy",
          "pass": false,
          "evidence": "Not sent on any of the 4 pages."
        },
        {
          "id": "x-content-type-options",
          "title": "x-content-type-options",
          "pass": false,
          "evidence": "Not sent on any of the 4 pages."
        },
        {
          "id": "referrer-policy",
          "title": "referrer-policy",
          "pass": false,
          "evidence": "Not sent on any of the 4 pages."
        },
        {
          "id": "permissions-policy",
          "title": "permissions-policy",
          "pass": false,
          "evidence": "Not sent on any of the 4 pages."
        },
        {
          "id": "x-frame-options",
          "title": "x-frame-options",
          "pass": false,
          "evidence": "Not sent on any of the 4 pages."
        },
        {
          "id": "mixed-content",
          "title": "Mixed content",
          "pass": false,
          "evidence": "home: img[src] http://cdn.example.com/storefront.jpg; home: request http://cdn.example.com/storefront.jpg"
        },
        {
          "id": "spam-trap",
          "title": "Form spam trap",
          "pass": false,
          "evidence": "0 of 1 forms have a hidden website field outside the tab order."
        },
        {
          "id": "form-destination",
          "title": "Form destination",
          "pass": true,
          "evidence": "contact: action=\"#\", method=\"post\", submit disabled; local server rejects POST with 405."
        },
        {
          "id": "third-party-scripts",
          "title": "Third-party scripts",
          "pass": true,
          "evidence": "No third-party scripts on any of the 4 pages."
        },
        {
          "id": "privacy-link",
          "title": "Privacy link",
          "pass": false,
          "evidence": "0 of 4 page footers link to the privacy page."
        },
        {
          "id": "console-errors",
          "title": "Browser console",
          "pass": false,
          "evidence": "home: Failed to load resource: net::ERR_BLOCKED_BY_CLIENT.Inspector; home: Failed to load resource: the server responded with a status of 404 (Not Found); services: Failed to load resource: the server responded with a status of 404 (Not Found); contact: Failed to load resource: the server responded with a status of 404 (Not Found); privacy: Failed to load resource: the server responded with a status of 404 (Not Found)"
        }
      ],
      "observations": [
        {
          "page": "/",
          "httpStatus": 200,
          "headers": {
            "strict-transport-security": null,
            "content-security-policy": null,
            "x-content-type-options": null,
            "referrer-policy": null,
            "permissions-policy": null,
            "x-frame-options": null
          },
          "mixed": [
            "img[src] http://cdn.example.com/storefront.jpg",
            "request http://cdn.example.com/storefront.jpg"
          ],
          "forms": [],
          "scripts": [
            {
              "src": "assets/gallery.js",
              "integrity": "",
              "crossorigin": null,
              "inline": ""
            }
          ],
          "privacy": false,
          "consoleErrors": [
            "Failed to load resource: net::ERR_BLOCKED_BY_CLIENT.Inspector",
            "Failed to load resource: the server responded with a status of 404 (Not Found)"
          ],
          "failedResources": [
            {
              "url": "[local]/assets/gallery.js",
              "status": 404
            }
          ],
          "testBlockedRequests": [
            {
              "url": "http://cdn.example.com/storefront.jpg",
              "reason": "Our test blocked this external request before network access."
            }
          ],
          "dimensions": {
            "scroll": 390,
            "client": 390
          }
        },
        {
          "page": "/services.html",
          "httpStatus": 200,
          "headers": {
            "strict-transport-security": null,
            "content-security-policy": null,
            "x-content-type-options": null,
            "referrer-policy": null,
            "permissions-policy": null,
            "x-frame-options": null
          },
          "mixed": [],
          "forms": [],
          "scripts": [
            {
              "src": "assets/gallery.js",
              "integrity": "",
              "crossorigin": null,
              "inline": ""
            }
          ],
          "privacy": false,
          "consoleErrors": [
            "Failed to load resource: the server responded with a status of 404 (Not Found)"
          ],
          "failedResources": [
            {
              "url": "[local]/assets/gallery.js",
              "status": 404
            }
          ],
          "testBlockedRequests": [],
          "dimensions": {
            "scroll": 390,
            "client": 390
          }
        },
        {
          "page": "/contact.html",
          "httpStatus": 200,
          "headers": {
            "strict-transport-security": null,
            "content-security-policy": null,
            "x-content-type-options": null,
            "referrer-policy": null,
            "permissions-policy": null,
            "x-frame-options": null
          },
          "mixed": [],
          "forms": [
            {
              "action": "#",
              "method": "post",
              "submitDisabled": true,
              "trap": false
            }
          ],
          "scripts": [
            {
              "src": "assets/gallery.js",
              "integrity": "",
              "crossorigin": null,
              "inline": ""
            }
          ],
          "privacy": false,
          "consoleErrors": [
            "Failed to load resource: the server responded with a status of 404 (Not Found)"
          ],
          "failedResources": [
            {
              "url": "[local]/assets/gallery.js",
              "status": 404
            }
          ],
          "testBlockedRequests": [],
          "dimensions": {
            "scroll": 390,
            "client": 390
          }
        },
        {
          "page": "/privacy.html",
          "httpStatus": 200,
          "headers": {
            "strict-transport-security": null,
            "content-security-policy": null,
            "x-content-type-options": null,
            "referrer-policy": null,
            "permissions-policy": null,
            "x-frame-options": null
          },
          "mixed": [],
          "forms": [],
          "scripts": [
            {
              "src": "assets/gallery.js",
              "integrity": "",
              "crossorigin": null,
              "inline": ""
            }
          ],
          "privacy": false,
          "consoleErrors": [
            "Failed to load resource: the server responded with a status of 404 (Not Found)"
          ],
          "failedResources": [
            {
              "url": "[local]/assets/gallery.js",
              "status": 404
            }
          ],
          "testBlockedRequests": [],
          "dimensions": {
            "scroll": 390,
            "client": 390
          }
        }
      ]
    },
    "launch": {
      "label": "Launch build",
      "passed": 12,
      "total": 12,
      "checks": [
        {
          "id": "strict-transport-security",
          "title": "strict-transport-security",
          "pass": true,
          "evidence": "max-age=31536000 · sent on all 4 pages."
        },
        {
          "id": "content-security-policy",
          "title": "content-security-policy",
          "pass": true,
          "evidence": "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self'; font-src 'self'; connect-src 'none'; object-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none' · sent on all 4 pages."
        },
        {
          "id": "x-content-type-options",
          "title": "x-content-type-options",
          "pass": true,
          "evidence": "nosniff · sent on all 4 pages."
        },
        {
          "id": "referrer-policy",
          "title": "referrer-policy",
          "pass": true,
          "evidence": "no-referrer · sent on all 4 pages."
        },
        {
          "id": "permissions-policy",
          "title": "permissions-policy",
          "pass": true,
          "evidence": "camera=(), microphone=(), geolocation=() · sent on all 4 pages."
        },
        {
          "id": "x-frame-options",
          "title": "x-frame-options",
          "pass": true,
          "evidence": "DENY · sent on all 4 pages."
        },
        {
          "id": "mixed-content",
          "title": "Mixed content",
          "pass": true,
          "evidence": "No plain HTTP resource references on any of the 4 pages."
        },
        {
          "id": "spam-trap",
          "title": "Form spam trap",
          "pass": true,
          "evidence": "1 of 1 forms have a hidden website field outside the tab order."
        },
        {
          "id": "form-destination",
          "title": "Form destination",
          "pass": true,
          "evidence": "contact: action=\"#\", method=\"post\", submit disabled; local server rejects POST with 405."
        },
        {
          "id": "third-party-scripts",
          "title": "Third-party scripts",
          "pass": true,
          "evidence": "No third-party scripts on any of the 4 pages."
        },
        {
          "id": "privacy-link",
          "title": "Privacy link",
          "pass": true,
          "evidence": "4 of 4 page footers link to the privacy page."
        },
        {
          "id": "console-errors",
          "title": "Browser console",
          "pass": true,
          "evidence": "No console errors or uncaught exceptions across all 4 pages."
        }
      ],
      "observations": [
        {
          "page": "/",
          "httpStatus": 200,
          "headers": {
            "strict-transport-security": "max-age=31536000",
            "content-security-policy": "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self'; font-src 'self'; connect-src 'none'; object-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'",
            "x-content-type-options": "nosniff",
            "referrer-policy": "no-referrer",
            "permissions-policy": "camera=(), microphone=(), geolocation=()",
            "x-frame-options": "DENY"
          },
          "mixed": [],
          "forms": [],
          "scripts": [],
          "privacy": true,
          "consoleErrors": [],
          "failedResources": [],
          "testBlockedRequests": [],
          "dimensions": {
            "scroll": 390,
            "client": 390
          }
        },
        {
          "page": "/services.html",
          "httpStatus": 200,
          "headers": {
            "strict-transport-security": "max-age=31536000",
            "content-security-policy": "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self'; font-src 'self'; connect-src 'none'; object-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'",
            "x-content-type-options": "nosniff",
            "referrer-policy": "no-referrer",
            "permissions-policy": "camera=(), microphone=(), geolocation=()",
            "x-frame-options": "DENY"
          },
          "mixed": [],
          "forms": [],
          "scripts": [],
          "privacy": true,
          "consoleErrors": [],
          "failedResources": [],
          "testBlockedRequests": [],
          "dimensions": {
            "scroll": 390,
            "client": 390
          }
        },
        {
          "page": "/contact.html",
          "httpStatus": 200,
          "headers": {
            "strict-transport-security": "max-age=31536000",
            "content-security-policy": "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self'; font-src 'self'; connect-src 'none'; object-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'",
            "x-content-type-options": "nosniff",
            "referrer-policy": "no-referrer",
            "permissions-policy": "camera=(), microphone=(), geolocation=()",
            "x-frame-options": "DENY"
          },
          "mixed": [],
          "forms": [
            {
              "action": "#",
              "method": "post",
              "submitDisabled": true,
              "trap": true
            }
          ],
          "scripts": [],
          "privacy": true,
          "consoleErrors": [],
          "failedResources": [],
          "testBlockedRequests": [],
          "dimensions": {
            "scroll": 390,
            "client": 390
          }
        },
        {
          "page": "/privacy.html",
          "httpStatus": 200,
          "headers": {
            "strict-transport-security": "max-age=31536000",
            "content-security-policy": "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self'; font-src 'self'; connect-src 'none'; object-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'",
            "x-content-type-options": "nosniff",
            "referrer-policy": "no-referrer",
            "permissions-policy": "camera=(), microphone=(), geolocation=()",
            "x-frame-options": "DENY"
          },
          "mixed": [],
          "forms": [],
          "scripts": [],
          "privacy": true,
          "consoleErrors": [],
          "failedResources": [],
          "testBlockedRequests": [],
          "dimensions": {
            "scroll": 390,
            "client": 390
          }
        }
      ]
    }
  },
  "inputSHA256": "e86098af252ad27d24c04051a46f163181ab25a2512fa1f28a5b24fcb2ac9388"
}
