No guessing, no vibes: I ship two fixture article pages, one sloppy and one fixed, and paste the real Lighthouse and web-vitals output. What actually moves LCP, CLS and INP on a mostly-static site, and which micro-optimizations are not worth your time.
JSON-LD only pays off when the markup matches what a crawler can see. Here is what I actually ship for this blog — WebSite, Person, BreadcrumbList, BlogPosting — how I validate it, the mistakes that earn nothing, and how I keep it from drifting.
Static sites won the content web again thanks to CDNs, Core Web Vitals and a tiny attack surface — but they are not universal. A practical look at the static site generator comeback, Astro vs Hugo, JAMstack limits, and when you genuinely need a server.