List recent forum posts, newest first (pinned posts first).
Args:
category_slug: Filter by category slug (optional). An unknown slug
raises a validation error.
limit: Max posts to return (default 20, max 100)
offset: Number of posts to skip for pagination (default: 0)
Returns:
``{"posts": [{id, category_slug, author_id, title, content,
is_pinned, is_locked, reply_count, created_at, updated_at}],
"total_count": N, "has_more": bool, "offset": N, "limit": N}``.
Staff-only categories are excluded for non-staff.