ICPI Cutover Parity Checklist
Purpose
This checklist is the low-risk parity gate before pointing live or shared dev traffic at svc-icpi.
Read-Route Checks
GET /api/v1/icpi/pricesreturns the same JSON shape and pagination fieldsGET /api/v1/icpi/suggestreturns the same suggestion shape and region fallback behaviorGET /api/v1/icpi/latest/:itemCodereturns the same404 icpi_not_foundbehaviorGET /api/v1/icpi/estimatereturns the same estimate shape and400 invalid_estimate_querybehavior
Write-Route / Auth Checks
POST /api/v1/icpi/upsertstill requires gateway auth- extracted
svc-icpiservice still requires service-side bearer auth on/icpi/upsert - invalid token still returns the same
401reason family - failed principal resolution still returns
principal_resolution_failed
Request / Response Parity Checks
sourceKeynormalization still defaults toSRFcurrencynormalization still defaults toGEL- row dedupe still keys on
sourceKey,year,quarter,regionCode,itemCode,unit,currency - upsert response meta fields still include:
receivedacceptedduplicatesDroppedsourceKeysourceVersion
Env Cutover Checks
ICPI_SERVICE_URLcan point tohttp://localhost:4021TENDERS_SERVICE_URLremains unchanged for all non-ICPI trafficAUTH_SERVICE_URLis set for the newsvc-icpiruntimeDATABASE_URLis set for the newsvc-icpiruntimeJWT_SECRETis set for the newsvc-icpiruntime
Boot / Build Checks
npm --prefix services/svc-icpi run buildnpm --prefix services/svc-icpi run startwith required envnpm --prefix services/svc-tenders run buildstill passes while old host remains
Gateway Cutover Checks
- gateway still proxies
GET /api/v1/icpi/*without route changes - gateway still proxies
POST /api/v1/icpi/upsertwithout route changes ICPI_SERVICE_URL=http://localhost:4021is enough to redirect ICPI traffic without changing gateway code
Rollback Checks
- old colocated ICPI host still exists in
svc-tenders - rollback can happen by setting
ICPI_SERVICE_URLback to the old host or unsetting it - no irreversible code deletion happened in Sprint 49
Monitoring Checks
- watch
502 icpi_service_unavailable - watch
504 icpi_service_timeout - watch
401spikes on ICPI upsert - watch response-shape regressions in the web ICPI page and portal API helpers