apoorvrajdev commited on
Commit
c062f77
Β·
1 Parent(s): 4dbe32d

docs(readme): mark WS-C complete (HF Space live with /healthz + /v1/captions verified)

Browse files
Files changed (1) hide show
  1. README.md +1 -1
README.md CHANGED
@@ -557,7 +557,7 @@ The backend test suite ([`backend/app/tests/`](backend/app/tests/)) introduced i
557
  - [x] **WS-A** β€” Backend containerisation: `Dockerfile` (python:3.11-slim, non-root UID 1000, EXPOSE 7860, HEALTHCHECK on `/healthz`) + `.dockerignore` + corrected `.env.example` schema
558
  - [x] **WS-A4** β€” Lifespan integration with HuggingFace Hub: extended `BackendSettings` with `weights_hub_repo` / `weights_hub_revision` / `weights_hub_filename` / `weights_cache_dir`; new `app.services.weights_loader.resolve_weights` calls `huggingface_hub.snapshot_download` when configured, falls back to local paths otherwise (4 new unit tests, downloader injected for offline testing)
559
  - [x] **WS-B** β€” Uploaded dev-scaffold weights + tokenizer to [`apoorvrajdev/captioning-inceptionv3-transformer`](https://huggingface.co/apoorvrajdev/captioning-inceptionv3-transformer) on HuggingFace Hub, tagged `v1.0.0`, verified via `snapshot_download` (SHA-256 hashes match local artefacts byte-for-byte)
560
- - [ ] **WS-C** β€” First manual deploy to a HuggingFace Space (Docker SDK, cpu-basic, port 7860, single worker)
561
  - [x] **WS-D** β€” **Backend test suite** ([`backend/app/tests/`](backend/app/tests/)): 12 route tests covering the full `/healthz` + `/v1/captions` contract (200 / 400 / 413 / 415 / 422 / 503) with a duck-typed `FakePredictorService` β€” no TF loaded, full slice runs in 0.3 s
562
  - [ ] **WS-E** β€” Frontend deploy to Vercel (static SPA, `VITE_API_BASE` baked at build time, SPA rewrites)
563
  - [ ] **WS-F** β€” Production CORS: add the deployed Vercel origin to `serve.cors_allowed_origins`
 
557
  - [x] **WS-A** β€” Backend containerisation: `Dockerfile` (python:3.11-slim, non-root UID 1000, EXPOSE 7860, HEALTHCHECK on `/healthz`) + `.dockerignore` + corrected `.env.example` schema
558
  - [x] **WS-A4** β€” Lifespan integration with HuggingFace Hub: extended `BackendSettings` with `weights_hub_repo` / `weights_hub_revision` / `weights_hub_filename` / `weights_cache_dir`; new `app.services.weights_loader.resolve_weights` calls `huggingface_hub.snapshot_download` when configured, falls back to local paths otherwise (4 new unit tests, downloader injected for offline testing)
559
  - [x] **WS-B** β€” Uploaded dev-scaffold weights + tokenizer to [`apoorvrajdev/captioning-inceptionv3-transformer`](https://huggingface.co/apoorvrajdev/captioning-inceptionv3-transformer) on HuggingFace Hub, tagged `v1.0.0`, verified via `snapshot_download` (SHA-256 hashes match local artefacts byte-for-byte)
560
+ - [x] **WS-C** β€” First manual deploy to [`apoorvrajdev/image-captioning-api`](https://huggingface.co/spaces/apoorvrajdev/image-captioning-api) on HuggingFace Spaces (Docker SDK, cpu-basic, port 7860, single worker) β€” Space variables wire `BACKEND_WEIGHTS_HUB_REPO` / `_REVISION` / `_FILENAME` + `BACKEND_WARMUP=true`; lifespan pulls weights from the Hub on cold start; `/healthz` returns `model_loaded: true` and `/v1/captions` verified end-to-end via Swagger UI
561
  - [x] **WS-D** β€” **Backend test suite** ([`backend/app/tests/`](backend/app/tests/)): 12 route tests covering the full `/healthz` + `/v1/captions` contract (200 / 400 / 413 / 415 / 422 / 503) with a duck-typed `FakePredictorService` β€” no TF loaded, full slice runs in 0.3 s
562
  - [ ] **WS-E** β€” Frontend deploy to Vercel (static SPA, `VITE_API_BASE` baked at build time, SPA rewrites)
563
  - [ ] **WS-F** β€” Production CORS: add the deployed Vercel origin to `serve.cors_allowed_origins`