Butkhuzi Live Cutover Observations
Route Checks Performed
GET /api/v1/butkhuzi/norms?page=1&pageSize=1
- Result:
200 - Body:
{"ok":true,"norms":[],"meta":{"total":0,"page":1,"pageSize":1,"totalPages":0,"count":0,"filters":{}}}
GET /api/v1/butkhuzi/suggest?query=SNIP&limit=2
- Result:
200 - Body:
{"ok":true,"suggestions":[],"meta":{"query":"SNIP","count":0,"limit":2,"sourceKey":null,"sourceVersion":null}}
GET /api/v1/butkhuzi/search?query=SNIP&page=1&pageSize=2
- Result:
200 - Body:
{"ok":true,"chunks":[],"meta":{"total":0,"page":1,"pageSize":2,"totalPages":0,"count":0,"query":"SNIP","sourceKey":null,"sourceVersion":null,"langCode":null,"chunkType":null}}
POST /api/v1/butkhuzi/upsert without bearer token
- Result:
401 - Body:
{"ok":false,"reasonCode":"missing_bearer_token"}
POST /api/v1/butkhuzi/chunks/rebuild with bearer token
- Result:
200 - Body:
{"ok":true,"deleted":0,"inserted":0,"meta":{"sourceKey":"SNIP","sourceVersion":null}}
Auth Observations
- Gateway auth behavior remained unchanged.
- Unauthenticated admin mutation still returned
401 missing_bearer_token. - Authenticated admin path still succeeded using the existing dev impersonation flow through
POST /api/v1/auth/dev/impersonate.
Response / Status Observations
- No response-shape drift was observed in the checked set.
- No status-code drift was observed in the checked set.
- The cutover matched the Sprint 78 parity rehearsal expectations.
Anomalies
- None in the checked route set.
Rollback Notes
- Rollback was not needed during Sprint 79.
- Rollback remains simple:
- point
BUTKHUZI_SERVICE_URLback tohttp://localhost:4020or remove it - restart the live API
- re-run the same Butkhuzi smoke checks
- point