Butkhuzi Live Cutover Window
Exact Env Change Used
Live API seam change in services/api/.env:
- before: Butkhuzi traffic fell back through
TENDERS_SERVICE_URL=http://localhost:4020 - after:
BUTKHUZI_SERVICE_URL=http://localhost:4024
The resulting live gateway seam is:
BUTKHUZI_SERVICE_URL=http://localhost:4024TENDERS_SERVICE_URL=http://localhost:4020
Cutover Start Steps
- Verified live API health on
http://localhost:4001/api/v1/health. - Verified old colocated Butkhuzi host health on
http://localhost:4020/health. - Started extracted
svc-butkhuzion canonical targethttp://localhost:4024. - Verified extracted runtime health on
http://localhost:4024/health. - Updated
services/api/.envto setBUTKHUZI_SERVICE_URL=http://localhost:4024. - Restarted the live API on
:4001so the env-only seam change took effect.
Smoke Checks Run
Immediately after cutover on the live gateway:
GET /api/v1/butkhuzi/norms?page=1&pageSize=1GET /api/v1/butkhuzi/suggest?query=SNIP&limit=2GET /api/v1/butkhuzi/search?query=SNIP&page=1&pageSize=2POST /api/v1/butkhuzi/upsertwithout bearer tokenPOST /api/v1/butkhuzi/chunks/rebuildwith dev impersonation bearer token and{"sourceKey":"SNIP"}
Post-cutover health checks:
GET http://localhost:4001/api/v1/healthGET http://localhost:4020/healthGET http://localhost:4024/health
Observations
- Gateway route shape stayed unchanged.
- Auth behavior stayed unchanged.
- Status codes and response bodies matched the Sprint 78 rehearsal expectations.
- Old host remained available on
:4020as rollback target during the window. - Extracted runtime remained healthy on
:4024.
Cutover Outcome
- The cutover remained in place.
- Rollback was not needed.
Stop / Rollback Steps If Needed Later
- Change
services/api/.envso Butkhuzi traffic points back tohttp://localhost:4020:- either remove
BUTKHUZI_SERVICE_URL - or set
BUTKHUZI_SERVICE_URL=http://localhost:4020
- either remove
- Restart the live API on
:4001. - Re-run the Butkhuzi smoke checks on the live gateway.