You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Umbrella tracking issue for the "launch" work needed to take the blog from shipped to discoverable. #2960 merged the blog as additive routes under packages/landing — /blog, /blog/<slug>, /blog/feed.xml, dynamic llms.txt all live today — but the feature is intentionally hidden from the main site's navigation and sitemap.
Without these steps the blog is live but only reachable by someone who already knows the URL.
Scope
Visibility from the main site
Nav link. Add Blog to packages/landing/src/components/nav.tsx (and a matching link in footer.tsx if that's the pattern). Pick placement between existing links.
Dynamic sitemap entries. Either extend the static packages/landing/public/sitemap.xml with /blog + each post slug, or move sitemap generation into the worker so it stays in sync with published posts. The dynamic worker approach is preferred — tracked alongside blog: scope deferrals but duplicated here because it's launch-critical (Google won't index what it can't find).
External validation
All require a preview-deploy URL, which doesn't exist yet.
W3C RSS validator — validator.w3.org/feed against /blog/feed.xml
Google Rich Results — test the BlogPosting JSON-LD once SSR head injection lands (blocked by the SSR <head> item in blog: scope deferrals)
Twitter Card validator — requires per-post OG PNG or at minimum the shared /og.png being linked correctly
LinkedIn Post Inspector — same as Twitter
Lighthouse audit on /blog and /blog/blog-runs-on-vertz — capture baseline perf / SEO / accessibility scores
Announcement
Build-in-public thread — draft already written at ~/vertz-dev/insights/2960-blog-runs-on-vertz.md; post once nav link + sitemap are live and the first post has a permanent URL someone can bookmark.
Pick an announcement channel strategy — single Twitter thread, or thread + Hacker News + Discord?
plans/post-implementation-reviews/2947-blog.md — retro (section "What went wrong" docs: compiler design plan #7: "Blog is live but unlaunchable as-shipped")
Acceptance
Launch is done when:
Someone landing on vertz.dev can click through to /blog without knowing the URL
Google can discover every post via sitemap
External validators confirm RSS, JSON-LD, and social previews render correctly
Umbrella tracking issue for the "launch" work needed to take the blog from shipped to discoverable. #2960 merged the blog as additive routes under
packages/landing—/blog,/blog/<slug>,/blog/feed.xml, dynamicllms.txtall live today — but the feature is intentionally hidden from the main site's navigation and sitemap.Without these steps the blog is live but only reachable by someone who already knows the URL.
Scope
Visibility from the main site
Blogtopackages/landing/src/components/nav.tsx(and a matching link infooter.tsxif that's the pattern). Pick placement between existing links.packages/landing/public/sitemap.xmlwith/blog+ each post slug, or move sitemap generation into the worker so it stays in sync with published posts. The dynamic worker approach is preferred — tracked alongsideblog: scope deferralsbut duplicated here because it's launch-critical (Google won't index what it can't find).External validation
All require a preview-deploy URL, which doesn't exist yet.
validator.w3.org/feedagainst/blog/feed.xmlBlogPostingJSON-LD once SSR head injection lands (blocked by the SSR<head>item inblog: scope deferrals)/og.pngbeing linked correctly/blogand/blog/blog-runs-on-vertz— capture baseline perf / SEO / accessibility scoresAnnouncement
~/vertz-dev/insights/2960-blog-runs-on-vertz.md; post once nav link + sitemap are live and the first post has a permanent URL someone can bookmark.Related
plans/post-implementation-reviews/2947-blog.md— retro (section "What went wrong" docs: compiler design plan #7: "Blog is live but unlaunchable as-shipped")Acceptance
Launch is done when:
vertz.devcan click through to/blogwithout knowing the URL