# Mobile F1+F4 fix — tokeni van Zustand + demo-login prod gate (MC #900173)

<!-- ALAI-MC:900173:BEFORE -->
# Mobile F1+F4 fix — tokeni van Zustand + demo-login prod gate (MC #900173)

**Izvor:** Securion retroaktivni mobile audit (MC #900156, `~/system/evidence/900156/securion-mobile-audit-2026-08-23.md`), verdikt PASS-UZ-POPRAVKE. Blokira sljedeću mobile distribuciju (#900152 Faza 3).

## Nalaz F1 (KRITIČAN — blokira distribuciju)
`apps/mobile/src/store/authStore.ts` drži `accessToken` + `refreshToken` u Zustand `AuthState`; `client.ts` čita `useAuthStore.getState().accessToken`; 3 ekrana čitaju token hookom. PRD §13 + Impl-spec §1.3/Slice A izričito: *"no code path stores tokens in AsyncStorage or Zustand"*, *"tokens live in Keychain only"*. Store NIJE persist() — token ne ide na disk, ali je globalno čitljiv (DevTools/crash-reporting/memory-dump površina).

**Fix:** ukloniti oba tokena iz `AuthState` i svih `set()` poziva; module-level tokenService (uzor: `apps/web/lib/api.ts` `_accessToken`) ili sinhroni getter nad SecureStore; `client.ts` poziva getter.

## Nalaz F4 (SREDNJI)
`app/(auth)/login.tsx` renderuje "Pogledaj demo" (`startDemoSignIn` → `/auth/demo`) bez env/build-profile provjere — isti kod u `production` EAS profilu.

**Fix:** env-gate (`EXPO_PUBLIC_APP_ENV`) demo dugmeta van production profila.

## Acceptance
- [ ] `accessToken|refreshToken` u `authStore.ts` tipu = 0 pogodaka (grep)
- [ ] Testovi za tokenService + 401→refresh→retry lanac (danas 0 testova za auth lanac)
- [ ] Negativni kanarinac: vraćanje tokena u store obara test (oba smjera)
- [ ] Demo dugme odsutno u production buildu (test ili build-profile dokaz)
- [ ] gate_mobile (PR #389) zelen na PR-u
- [ ] Nezavisna peer verifikacija (auth = risky path)

---
## AFTER — isporučeno 2026-08-23 ~21:10 CEST
Main `94caa803` (PR 391, merge `3ac29dbf`). Lanac: plan (paul-hudson) → pi izvršenje PASS → John verify → parisa CONFIRMED-UZ-NAPOMENE → gate_mobile IZVRŠEN+succeeded (build 1287 timeline). Acceptance: AC1 grep=0 ✓, AC2 testovi (5 fajlova/24) ✓, AC3 gate_mobile na PR-u ✓, AC4 kanarinac oba smjera ✓, AC5 demo-gate production ✓, AC6 nezavisna verifikacija ✓. Evidence: `~/system/evidence/900173/`.
<!-- ALAI-MC:900173:AFTER -->