Raport weryfikacji jakości specyfikacji

Produkt: Browser-VPN · Dokument: 2026-07-22-browser-vpn-product-design.md (738 linii) · Data: 2026-07-22

Zakres: kompletność · jednoznaczność · spójność · mierzalność · realność

1. Podsumowanie

Specyfikacja jest dojrzała jak na draft: opisuje pełny przepływ zakupu i sesji, stack, model danych, API, monitoring i deployment, uczciwie wskazując ograniczenia i pytania otwarte. Główne ryzyka to niejednoznaczność naliczania czasu i wiązania urządzenia oraz napięcie między deklaracją prywatności a modelem uprawnień kontenerów. Przed implementacją trzeba domknąć trzy problemy krytyczne.

2. Ocena ogólna

6.5 / 10
Kompletność 6 Jednoznaczność 5 Spójność 7 Mierzalność 6 Realność 7

3. Znalezione problemy

KrytycznyK1 — Sprzeczna semantyka naliczania czasu (§1.3 pkt 10)

„Time starts counting from first access, with a 1-hour buffer after container launch."

Nie wiadomo, czy zegar rusza od pierwszego dostępu, czy od startu kontenera + 1h. Kontener (koszt) działa, zanim opłacony zegar wystartuje. Wymaga jednej reguły.

KrytycznyK2 — Podwójne przechowywanie deviceToken (§1.3 pkt 8, §10.2)

„stored in httpOnly cookie and localStorage."

Cookie httpOnly jest niedostępne z JS, localStorage nie leci w żądaniach — źródła mogą się rozjechać. Dla audytorium „total privacy" (incognito, czyszczenie storage) wiązanie zrywa się, a brak recovery: „No token → redirect to error page". Wskaż jedno źródło prawdy + flow odzyskania.

KrytycznyK3 — SYS_ADMIN kontra izolacja (§10.1)

„Only required capabilities are granted (NET_ADMIN, SYS_ADMIN...)."

SYS_ADMIN jest bliskie rootowi i podważa tezę o silnej izolacji. Dla produktu privacy-first udokumentuj mitygacje (seccomp/AppArmor, user namespaces, rootless) lub uzasadnij konieczność.

WażnyProblemy istotne, ni-blokujące

KosmetycznyDrobne uwagi

4. Brakujące elementy

5. Mocne strony

6. Rekomendacje

Werdykt: specyfikacja gotowa do fazy planowania po usunięciu trzech niejednoznaczności krytycznych (K1–K3). Status „Draft — pending review" jest adekwatny.