Mobile F1+F4 fix — tokeni van Zustand + demo-login prod gate (MC #900173)
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|refreshTokenuauthStore.tstipu = 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/.