Security baseline & audit log. SEC (security profile) MUST read this before any audit — it is the record of what's done, when, and what remains open. Update in the SAME commit as any security change. Last full audit: Aug 25, 2026.
npm audit: 0 vulnerabilities (was 18 — fixed Aug 25: eleventy 3.1.6, eleventy-img 7 ESM migration with shortcode wrapper).npmrc: puppeteer_skip_download=true (penthouse→critical pulls puppeteer but doesn't use it in build; download 403s otherwise)_headers, Cloudflare Pages)X-Content-Type-Options: nosniff ✓Referrer-Policy: strict-origin-when-cross-origin ✓X-Frame-Options: DENY ✓Permissions-Policy: geolocation=(), microphone=(), camera=(), payment=() ✓CSP Report-Only (see _headers for directives) — review violations 1–2 weeks from Aug 25, then convert to enforced CSPHSTS max-age=15552000 (6mo), includeSubDomains, no-preload — extend to 2y+preload after clean periodNODE_VERSION env var (CF ignores .nvmrc) + .nvmrc in repowiki/ and AGENTS.md excluded from dist via .eleventyignore (note: eleventyExcludeFromCollections frontmatter does NOT prevent rendering)cookieConsentAccepted event (fix e17fa55, Aug 25); noscript pixel removed| Item | Trigger | Notes |
|---|---|---|
| ads.txt | AdSense activation | REQUIRED before serving AdSense ads |
| CSP enforce | After 1–2 wks clean report-only period | Convert header, monitor |
| HSTS extension | After clean period | → max-age=2y + preload |
Placeholder IDs in _data/site.js |
Before ad launch | adsenseId is placeholder |
| Date | Scope | Result |
|---|---|---|
| Aug 25, 2026 | Full site: deps, headers, build, client JS | All above fixes applied & deployed |