The progress collection was created before user_id was added to the schema, causing all user-keyed progress queries to return 400. Add an ensure_fields helper that idempotently patches existing collections with missing fields, and run it for progress.user_id on every init.