The live /blog showed "How to Read Line Movement Like a Sharp" dated 2026-03-22
— an orphaned, uncommitted file that predates the product. Meanwhile 5
genuinely-real articles sat in content/articles/, unwired.
- blog.ts now reads content/articles (not the untracked content/blog). Maps
`excerpt` → description, skips `status: draft`, reads explicit `slug`.
- Added honest dates (2026-07-17, the real publish day) + flipped the 5
articles to `status: published`. Real content: how-vyndr-grades-a-prop,
why-our-misses-are-public, what-clv-is, how-streaks-lie, the-vyndr-originals.
- Retired the orphan: /blog/line-movement-guide 301s to /blog (next.config).
- Added a minimal, dependency-free, XSS-safe markdown renderer so headers/bold
render as HTML instead of literal "##". Each article keeps title/date/
read-time + the existing OG/JSON-LD metadata (affiliate-review ready). Richer
media (images/charts) is the separate design train.
Web build exit 0 (SSGs all 5 slugs); backend suite unaffected.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>