Nirna
← Escalations
Single-account escalation Low confidence

For NORTHWIND-12, POST /auth/login is consistently returning 404 while POST /auth/verify is returning 200, indicating the login route is missing/misrouted and likely causing the reported post-login verification failures.

Ticket NRNA-8 ·Account NORTHWIND-12 ·Created Jul 22, 2026 at 21:47 UTC ·Triaged in 45.6 s

What Nirna found

  1. For account NORTHWIND-12, POST /auth/login returned 404 at 2026-07-22T01:12:49Z.source ↗
  2. For account NORTHWIND-12, POST /auth/login returned 404 at 2026-07-22T01:12:51Z.source ↗
  3. For account NORTHWIND-12, POST /auth/verify returned 200 at 2026-07-22T01:49:27Z.source ↗
  4. For account NORTHWIND-12, POST /auth/login returned 404 at 2026-07-22T15:46:04Z.source ↗
  5. For account NORTHWIND-12, POST /auth/verify returned 200 at 2026-07-22T15:46:07Z.source ↗

What this means

The recurring 404s on POST /auth/login suggest the login route was removed or not registered for this tenant, so users never establish a session; subsequent POST /auth/verify calls then behave inconsistently relative to the customer’s environment (they report a KeyError/500), which aligns with verify running without expected session context. Restoring a POST /auth/login handler (or aliasing it to the current login handler) should normalize the flow and stop the post-login verification failures.

Who’s affected

Accounts affected
1
isolated so far
First seen
Jul 22 · 01:12 UTC

Also affects: NORTHWIND-12

Recommended fix

Code change
Reintroduce/alias the POST /auth/login route to the existing login handler so clients calling /auth/login receive a 200 and session establishment instead of 404. Change required: - In the web routing module, register a POST "/auth/login" endpoint that forwards to the existing login handler (currently used by other auth paths). Keep response schema identical to the canonical login path. Example (FastAPI-style) change: - Add: @router.post("/auth/login") async def login_alias(request: Request): return await login_handler(request) - Where login_handler is the existing function servicing the canonical login route. Ensure any session/cookie issuance mirrors the canonical path. After deploying, verify that POST /auth/login returns 200 for NORTHWIND-12 and that subsequent POST /auth/verify continues to return 200.
  • services/bindu_bazaar/bindu/web/routes/auth.py:120–165 @ 1a2b3c4

Suggested replies

Copy-paste ready. Your engineer edits and sends.

Customer reply
Thanks for the report. From our logs for NORTHWIND-12, we’re seeing POST /auth/login returning 404s while POST /auth/verify is returning 200. That 404 on the login step would prevent session establishment and can cause the follow-up verify to fail on your side. We’re preparing a code fix to restore the POST /auth/login route so your clients no longer hit 404 there. Once deployed, /auth/login should succeed and /auth/verify should continue to return 200. Could you confirm the timeframe you observed the failures and whether user u_a1b2c3d4 was calling POST /auth/login before /auth/verify? We’ll update you as soon as the fix is live.
Internal note
Evidence shows repeated 404s on POST /auth/login for NORTHWIND-12 (e1, e2, e7) while /auth/verify returns 200 (e4, e9). No 500s in our logs. Likely the login route was removed/renamed, and their client is still calling /auth/login. Plan: re-add/alias POST /auth/login to the current login handler so sessions are established normally. After deploy, validate by issuing POST /auth/login and then POST /auth/verify for NORTHWIND-12; both should be 200.
Engineering handoff
Issue: For tenant NORTHWIND-12, POST /auth/login returns 404 while POST /auth/verify returns 200. Their clients likely still call /auth/login; missing route prevents session creation and leads to verification failures on their side. Requested change: - Restore/alias POST /auth/login to the existing login handler so clients receive a 200 and normal session issuance. Implementation details: - File: services/bindu_bazaar/bindu/web/routes/auth.py (around router registrations) - Add route: @router.post("/auth/login") async def login_alias(request: Request): return await login_handler(request) - Ensure login_alias uses the same session/cookie issuance path and response model as the canonical login route. No behavior differences. Post-change validation: - For account_id=NORTHWIND-12, issue POST /auth/login and confirm http_status=200, then POST /auth/verify returns 200. Monitor logs for 15 minutes. Evidence: e1, e2, e7 show 404s on /auth/login; e4, e9 show 200s on /auth/verify. Risk: Low; route alias only. Rollback by reverting the route addition.
Why Nirna reached this conclusion

Verdict — Single-account escalation. Only this account is affected; the evidence points to a specific error pattern.

Confidence — Low. The checks barely cleared the bar. Treat this as a lead to follow, not an answer.

Who fixes it — Code change. This needs engineering: the cause is in shipped code.

Who’s affected. Only the reporting account is affected in this window.

SignalScore
Account matched from ticket text0.95
Recent deploy touched failing path0.00
Account configuration mismatch0.00
Code change in the failing path0.00
Feature-flag rollout mismatch0.00
Similar recent tickets1.00
Different accounts affected1.00

Was this triage right?

If we picked the wrong account, tell us the right one

Submitting this patches the active identity map on the spot. The next ticket from the same email domain will resolve to the correct account.