Publish Course
Publish a ready course to the owning account’s org catalog.
Sets catalog_listed_at=NOW() on the caller’s OWN course. Requires status ‘ready’ (a still-generating course has nothing to browse); a course in any other status returns 400 (code not_ready). catalog_listed_at is owner-writable (074 governance leaves it un-gated); the UPDATE runs under the tenant’s RLS scope so a non-owner or nonexistent course_id is 404 “Course not found” (opaque, does not distinguish the two).
Publishing does NOT set verified_at. When the owning org has requires_verification, the course stays invisible on /api/v1/learn/catalog until an admin verifies it separately (verified_at is admin-only, non-owner-writable governance).
Returns 200 .