- Generated HTML now in site/blog/posts/ (gitignored)
- CI workflow runs pandoc + make blog before deploy
- Updated all internal blog links to /blog/posts/ path
- blog/*.md remains the source of truth
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- find_closest_ns checks authorities (not just answers) for NS records,
fixing TLD priming cache misses that caused redundant root queries
- Periodic UDP re-probe every 5min when disabled — re-enables UDP
after switching from a restrictive network to an open one
- Dashboard DNSSEC shield uses fixed-width container for alignment
- Blog post: tuck key-tag into trust anchor paragraph
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add dnssec field to QueryLogEntry, track validation status per query
- DnssecStatus::as_str() for API serialization
- Dashboard shows green checkmark next to DNSSEC-verified responses
- Blog post: add "How keys get there" section, transport resilience section,
trim code blocks, update What's Next
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>