/api/articles now supports limit/cursor/tag/q/fields (all optional, old
shape preserved when no params given). New /api/articles/lite reads
wiki/_meta/index.json directly — skips frontmatter.load per file, cuts
12k-article sidebar load from 3.66MB/3.5s to 500KB/0.3s.
ETag + 304 on /api/articles, /api/articles/lite, /api/taxonomy.
RFC 7232-aware matching (wildcard, comma list, weak/strong).
Article etag mixes slug+mtime+size (catches renames); taxonomy etag
folds in concept fingerprint since build_taxonomy resolves titles at
request time.
Unblocks KBs in the 10k–100k range where the old full-payload endpoint
was already slow and would have failed outright.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>