Block a user
[Backend][Refactor] Shared IObjectStore/S3 registration — dedupe per-service AmazonS3Client blocks (epic #413)
[Infra][MinIO] Optional: replace sftp stack with MinIO SFTP mode (epic #413)
[Backend][MinIO] GeoLite2 → reference-data bucket; self-provisioning GeoIP (epic #413, resolves GeoIP half of #489)
[Infra][MinIO] Migrate Angular nginx root bind — presigned/proxy, LAST (epic #413)
[Infra][MinIO] Migrate /mnt/fusionio/spikersoft/ai → ai-models bucket for embeddings + quiz-generation (epic #413)
[Infra][MinIO] Uploads-tree coordinated batch cutover — 7 services off /mnt/fusionio (epic #413)
[Backend][MinIO] Replace API static-file media serving with S3-backed delivery (epic #413)
[Infra][MinIO] Migrate quarantine dir to S3 (quarantine bucket, epic #413)
[Infra][MinIO] Migrate dlls dir to S3 (dlls bucket, epic #413)
[Infra][MinIO] Migrate /app/assets (ThreeDModel) to S3 (assets bucket, epic #413)
[Infra][MinIO] Migrate lesson-videos + LessonVideoProcessor to S3 (lesson-videos bucket, epic #413)
[Infra][MinIO] Migrate blogs dir + BlogMediaProcessor to S3 (blogs bucket, epic #413)
[ArtPipe] Baked images Phase 4: cleanup — retire legacy image/bind, runbook + docs, acid test (epic #515)
[Infra][Registry] Gitea upstream-image mirror (skopeo → mirror/* org) + incremental stack repointing
[ArtPipe] Baked images Phase 3: prodstages image + live modeling-lane cutover (epic #515)
[ArtPipe] Baked images Phase 2: stood-down residents blender/sdxl/triposr, hunyuan deferred (epic #515)
[ArtPipe] Baked images Phase 1: SafetyCheck pilot image + cutover, incl. #486 fault isolation (epic #515)
[ArtPipe] Baked images Phase 0: build scaffolding (Dockerfiles, CI, setup flags) + disk/limits go-no-go gates (epic #515)
[Epic][ArtPipe][Infra] Per-model baked Docker images — venvs + weights built at image build time, no /opt/art_pipe bind
# [Enhancement] Add dynamic State/Province selection or autocomplete in Profile configuration
Good news: the enhancement this ticket asks for already exists end-to-end and now works in production. The dropdown wiring was all in place (profile.component loads states on country change…