Dockerfile.migrate copied only crates/db-migrate + a few unrelated crates
but left the root Cargo.toml's [workspace] members list referencing every
apps/* service, none of which exist in this build context - cargo failed
immediately with "failed to load manifest for workspace member apps/gateway".
Trim the workspace to just crates/db-migrate (it has no path dependency on
anything else per crates/db-migrate/Cargo.toml) using the same awk trick
Dockerfile.simple already uses per-service. Also fix the resulting binary
output path (workspace builds put target/ at the workspace root, not under
the member crate's own directory).
k8s-migration-job.yaml targeted namespace: default, where neither
nxtgauge-backend-rust-secrets nor a registry pull secret exist - both only
exist in the nxtgauge namespace where the actual app runs. Fix the namespace
and add the missing imagePullSecrets so the job can actually pull its image
and read DATABASE_URL.
Neither of these had ever been exercised successfully before - this is the
first real migration run since the job/image were added.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
RegisterPayload now accepts:
- full_name (single field, for old frontend clients)
- first_name + last_name (new format)
Error returned only if none of these are provided.