Fix observer data loss on upload failure, discover convey port dynamically
Observer was deleting captured screencast/audio data (cleanup_draft) even
when upload to convey failed. On upload failure, draft directories are now
renamed to final segment format so the dream pipeline processes them locally.
Replaced hardcoded DEFAULT_URL (stale port 5173) with read_service_port()
discovery — observer now finds convey's actual port from health/convey.port.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>