The end-to-end test creates a DRAFT, verifies it is hidden from a READ_ALL reader (list and getById), publishes it, verifies the reader sees it, then deletes it and confirms the join rows go with it but the linked Person remains. Also corrects the V58 author FK to reference the actual users table (not app_users). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>