Appearance
Wallet Admin Review Live Smoke
This smoke is the opt-in gateway proof for the wallet-owned admin review read queue. It validates the non-default route table that sends GET /api/admin/wallet/reviews to wallet-service /v1/admin/wallet/reviews.
It does not promote deploy/gateway/routes.json. Broad /api/wallet, /api/admin/wallet, payment, subscription, and quota routes remain legacy-proxied until their own parity, browser/runtime proof, and rollback evidence exist.
Static Check
Run the cheap route-table and response-envelope self-test in regular coverage:
bash
make test-monetization-routesThat target runs:
bash
WALLET_ADMIN_REVIEW_SELF_TEST=1 bash scripts/test/wallet-admin-review-live-smoke.shLocal Live Check
Start wallet-service first. The local Compose service exposes it on http://localhost:8097.
Start api-gateway with the non-default localhost route table:
bash
AUTH_JWT_SECRET=local-hoctapaz-development-secret-change-before-deploy \
GATEWAY_ROUTE_TABLE=deploy/gateway/routes.wallet-admin-review-native-localhost-example.json \
HTTP_ADDR=:18091 \
LEGACY_API_BASE_URL=http://localhost:4001 \
go run ./services/api-gateway/cmd/serverThen run the live smoke:
bash
GATEWAY_BASE_URL=http://localhost:18091 \
WALLET_ADMIN_REVIEW_LIVE_CONFIRM=wallet-admin-review-native \
AUTH_JWT_SECRET=local-hoctapaz-development-secret-change-before-deploy \
make test-wallet-admin-review-liveThe script mints an HS256 admin access token when no WALLET_ADMIN_REVIEW_AUTHORIZATION or AUTHORIZATION bearer token is provided.
What It Proves
/v1/routesexposes the non-defaultwallet-admin-reviewsroute withprefix=/api/admin/wallet/reviews,methods=["GET"],exact=true,state=native_read,target_prefix=/v1/admin/wallet/reviews,require_auth=true, andrequired_roles=["ADMIN"].GET /api/admin/wallet/reviews?limit=5returnssuccess=truewithdata.items,data.total,data.limit,data.offset, anddata.hasMore.- The gateway response headers prove
X-Hoctapaz-Gateway-Route: wallet-admin-reviewsandX-Hoctapaz-Gateway-Route-State: native_read. GET /api/admin/walletstill routes throughadminwithlegacy_proxy.GET /api/walletstill routes throughwalletwithlegacy_proxy.
Artifacts
Live runs write route-table, response, header, and summary files under:
text
output/qa/wallet-admin-review-live-<timestamp>/The summary records the gateway base URL, route table, native route, native status, fallback statuses, and the explicit note that the default route table still keeps broad wallet/admin routes legacy-proxied.
Latest Local Evidence
Captured on 2026-07-09 against local wallet-service on 8097 and a temporary api-gateway on 18091:
text
output/qa/wallet-admin-review-live-20260709-092623/Summary:
| Check | Evidence |
|---|---|
| Route table | deploy/gateway/routes.wallet-admin-review-native-localhost-example.json |
| Admin review queue | GET /api/admin/wallet/reviews?limit=5 returned 200 |
| Native route headers | X-Hoctapaz-Gateway-Route: wallet-admin-reviews, state native_read |
| Response envelope | success=true, empty data.items, total=0, limit=5, offset=0, hasMore=false |
| Broad admin fallback | GET /api/admin/wallet returned legacy 404 with route admin, state legacy_proxy |
| Broad wallet fallback | GET /api/wallet returned legacy 404 with route wallet, state legacy_proxy |
Current-Run Evidence
On 2026-07-13, the smoke was rerun with a fresh Compose project containing only wallet-service dependencies and a temporary Gateway on 127.0.0.1:18091. The current worktree returned 200 for the exact admin review route with the native route/state headers and the expected empty review envelope. Broad /api/admin/wallet and /api/wallet still matched their legacy routes; the deliberately unreachable legacy upstream made their responses 502, which is expected for this isolated routing proof and does not make them native.
Artifacts are in output/qa/wallet-admin-review-live-20260713/. The temporary Gateway, Compose containers, network, and volumes were removed after the run.
Rollback
Rollback is switching api-gateway back to the default route table:
bash
GATEWAY_ROUTE_TABLE=deploy/gateway/routes.jsonRecord the artifact directory, gateway route table, token role, and rollback confirmation before requesting default route promotion.