RODO już na etapie projektu i każde zobowiązanie przetestowane
Adres to dane osobowe. Ta strona wylicza dokładnie, co Addrova rejestruje, przechowuje i czego nigdy nie zachowuje. Każde stwierdzenie ma identyfikator i jest powiązane z testem automatycznym uruchamianym przy każdej zmianie kodu.
Zobowiązania zero log
W tych tabelach „adres” oznacza każde dane wprowadzone przez klienta: tekst swobodny, składniki, żądane współrzędne, pliki wsadowe. Źródłem referencyjnym jest specyfikacja zero log API, po francusku; ta strona tłumaczy ją bez zmiany znaczenia.
Wersja specyfikacji z dnia 2026-10-19
Co jest rejestrowane (lista wyczerpująca)
| Id | Stwierdzenie | Test automatyczny |
|---|---|---|
| ZL-01 | Jedna linia na żądanie HTTP, dokładnie z: metodą, szablonem trasy (/v1/geocode, nigdy rzeczywistym adresem URL ani ciągiem zapytania), statusem, czasem trwania, spseudonimizowanym najemcą, losowym identyfikatorem żądania. Bez adresu IP, bez user-agenta, bez klucza API. | api/tests/test_zerolog.py::test_access_log_exact_fields |
| ZL-02 | Jedyne inne komunikaty emitowane przez kod Addrova to te z poniższego wykazu; ich parametrami są identyfikatory zadań, liczniki, statusy lub nazwy typów wyjątków. | api/tests/test_privacy_claims.py::test_log_inventory_matches_code |
| ZL-03 | Najemca jest wszędzie spseudonimizowany (logi, ślady): 16 znaków szesnastkowych soloniego SHA-256 jego identyfikatora; identyfikator jawny nigdy się nie pojawia. | api/tests/test_observability.py::test_tenant_hash_is_stable_and_opaqueapi/tests/test_zerolog.py::test_access_log_exact_fields |
Czego nigdy się nie rejestruje ani nie śledzi
| Id | Stwierdzenie | Test automatyczny |
|---|---|---|
| ZL-10 | Żaden adres, żadna żądana współrzędna ani żaden klucz API nie pojawia się w logach, na wszystkich trasach (geokodowanie, odwrotne, autouzupełnianie, naprawa, wsad, zgodność z Google i Nominatim), także w razie błędu (awaria silnika, odrzucone dane, nieprawidłowy parametr, błędny klucz, nieznana trasa). | api/tests/test_zerolog.py::test_canary_never_logged |
| ZL-11 | Komunikaty bibliotek zewnętrznych są neutralizowane: parametry zamaskowane, ciąg zapytania wymazany, wyjątek sprowadzony do swojego typu (bez komunikatu i śladu stosu). | api/tests/test_zerolog.py::test_third_party_logger_args_and_query_redacted |
| ZL-12 | Odpowiedzi z błędem nie zwracają ani błędnej wartości, ani wewnętrznego komunikatu silnika. | api/tests/test_api.py::test_geocode_invalid_paramsapi/tests/test_api.py::test_engine_errors_do_not_echo_query |
| ZL-13 | Ślady OpenTelemetry zawierają tylko atrybuty z listy dozwolonych (metoda, szablon trasy, status, spseudonimizowany najemca, operacja silnika, kraj, liczba wyników, dokładność pierwszego wyniku), bez zdarzeń; bez adresu, współrzędnej, klucza i jawnego identyfikatora najemcy. | api/tests/test_observability.py::test_spans_carry_only_allowlisted_attributesapi/tests/test_observability.py::test_span_content |
| ZL-15 | Konsola: adres e-mail, tokeny magicznego linku i tokeny sesji nie pojawiają się w żadnym logu. | api/tests/test_console.py::test_email_and_tokens_never_logged |
| ZL-16 | Publiczne demo strony (/demo/v1): ani wpisany adres, ani adres IP odwiedzającego nie pojawia się w logach; IP nigdy nie jest przechowywane, do liczenia zapytań służy wyłącznie odcisk HMAC z dziennie zmienianym sekretem (bezużyteczny po rotacji). | api/tests/test_demo.py::test_demo_never_logs_address_or_ipapi/tests/test_demo.py::test_fingerprint_rotates_daily_and_hides_ipapi/tests/test_demo.py::test_redis_mode_shares_secret_and_counters |
| ZL-14 | Metryki Prometheus mają tylko etykiety o ograniczonych wartościach; nieznana ścieżka jest liczona jako <unmatched>. | api/tests/test_observability.py::test_metrics_labels_are_boundedapi/tests/test_observability.py::test_spans_carry_only_allowlisted_attributes |
Co jest przechowywane i jak długo
| Id | Stwierdzenie | Test automatyczny |
|---|---|---|
| ZL-20 | Klucze API są przechowywane wyłącznie jako odcisk SHA-256 (plus 12 znaków prefiksu do wyświetlania). | api/tests/test_tenancy_persistent.py::test_keys_are_hashed_and_revocable |
| ZL-21 | Baza nie zawiera żadnego żądania ani wyniku: tylko najemców, klucze (odciski) i liczniki użycia (najemca, dzień, punkt końcowy, liczba). | api/tests/test_privacy_claims.py::test_schema_has_no_content_columns |
| ZL-22 | Wsad: plik wejściowy jest usuwany zaraz po zakończeniu przetwarzania; wynik i metadane zadania są usuwane po upływie okresu przechowywania (domyślnie 1 godzina po zakończeniu, konfigurowalnie) lub natychmiast po DELETE; zadanie, które nigdy nie zostało przetworzone, jest czyszczone po 24 godzinach. | api/tests/test_batch.py::test_csv_roundtrip_usage_and_input_purgeapi/tests/test_batch.py::test_isolation_delete_and_expiryapi/tests/test_batch.py::test_result_purged_after_retention |
| ZL-23 | Metadane zadania wsadowego nie zawierają żadnego wiersza pliku (liczniki, daty, nazwy kolumn, kraj domyślny). | api/tests/test_privacy_claims.py::test_batch_metadata_has_no_row_content |
| ZL-25 | Konsola: jedyną przechowywaną daną osobową jest adres e-mail konta (oraz adres trwającego linku logowania, ważnego 15 minut, jednorazowego); tokeny linków i sesji są przechowywane wyłącznie jako odcisk SHA-256. | api/tests/test_privacy_claims.py::test_schema_has_no_content_columnsapi/tests/test_console.py::test_link_is_single_use_and_logout |
| ZL-26 | Organizacja nie widzi ani kluczy, ani użycia innej; klucz unieważniony lub wygasły (rotacja) jest odrzucany. | api/tests/test_console.py::test_org_isolationapi/tests/test_console.py::test_keys_lifecycle_and_plan_limit |
| ZL-27 | Webhook końca wsadu: ładunek zawiera wyłącznie identyfikator, status, liczniki i linki zadania, nigdy wiersz pliku ani adres; adres URL i sekret webhooka nigdy nie są logowane. | api/tests/test_batch_stream.py::test_webhook_delivery_signed_without_addresses_and_retried |
| ZL-28 | Idempotencja (Idempotency-Key): przez 24 godziny przechowywany jest wyłącznie odcisk SHA-256 żądania (a dla wsadu identyfikator zadania), nigdy wysłany adres ani odpowiedź. | api/tests/test_idempotency_versioning.py::test_idempotency_never_stores_addressapi/tests/test_idempotency_versioning.py::test_in_progress_conflict_and_stores_keep_no_content |
| ZL-29 | Brak niezadeklarowanego ruchu wychodzącego z sieci: w namespace domyślnie wszystko jest blokowane; strona internetowa nie ma ruchu wychodzącego; API łączy się tylko z DNS klastra, swoimi bazami danych (PostgreSQL, Redis), wewnętrznym kolektorem OTel oraz, dla webhooków, przez HTTPS z publicznym Internetem (zakresy prywatne, lokalne i metadanych wykluczone). Żadne zewnętrzne narzędzie analityczne nie może otrzymać żądania. | api/tests/test_k8s_hardening.py::test_egress_is_limited_to_declared_flowsapi/tests/test_k8s_hardening.py::test_namespace_is_restricted_and_denies_by_default |
| ZL-24 | Zadanie wsadowe jednego klienta jest niewidoczne dla innych klientów. | api/tests/test_batch.py::test_isolation_delete_and_expiry |
Czego (jeszcze) nie ma
| Id | Stwierdzenie | Test automatyczny |
|---|---|---|
| ZL-30 | Asynchroniczne rozwiązanie zastępcze /v1/repair (LLM) jest wyłączone: żadnego wywołania zewnętrznego, żaden adres nie opuszcza usługi. | api/tests/test_repair.py::test_repair_unrepairable_and_async_disabled |
| ZL-32 | W wersji v0 żaden e-mail nie jest naprawdę wysyłany (skrzynka nadawcza w pamięci) i nie jest podłączony żaden rzeczywisty dostawca rozliczeń (dostawca atrapa). | api/tests/test_privacy_claims.py::test_no_external_transport_by_default |
| ZL-31 | W wersji v0 nie ma pamięci podręcznej wyników (pamięć HMAC z rotowanym sekretem z ADR 0005 nie jest jeszcze zaimplementowana). | api/tests/test_privacy_claims.py::test_no_result_cache_in_v0 |
Wykaz komunikatów logów
To jedyne komunikaty emitowane przez kod, w dokładnym formacie. Test kończy się niepowodzeniem, jeśli kod i ta lista się rozjeżdżają.
%s %s %d %.1fms tenant=%s rid=%s
job %s queued rows=%d
job %s %s rows=%d matched=%d
job %s failed: %s
engine loaded: %s
addrova_engine not installed, using the fake engine
usage flush failed: %s
index preloaded: %d bytes
webhook job %s attempt %d status %s
engine contract violation: candidate without source
engine failure: %sPoza zakresem tych testów
Te punkty weryfikuje się inaczej i mówimy o tym wprost:
- Ingress / proxy: jego log dostępu musi być wyłączony na trasach API (ADR 0004); konfiguracja infrastruktury, do weryfikacji w infra/ i na klastrze.
- Silnik (addrova_engine): zobowiązuje się nie logować żądań (ADR 0002); jego własne testy to sprawdzają.
- Eksport śladów: tylko jeśli ustawiono ADDROVA_OTLP_ENDPOINT, do kolektora hostowanego w UE; bez tego ustawienia żaden ślad nie opuszcza procesu.
- Przechowywanie plików wsadowych: v0 na lokalnym dysku kontenera (uprawnienia 0600); szyfrowane przechowywanie obiektów w UE planowane na produkcję (ADR 0006, ADR 0009).
Skoro nic nie jest przechowywane, nic nie jest wykorzystywane ponownie
Addrova nie używa Twoich zapytań do trenowania modeli, tworzenia zbiorów danych ani wzbogacania swojego indeksu, a kod to urzeczywistnia: zapytania i wyniki nigdy nie są logowane (ZL-10), baza nie zawiera żadnego zapytania ani wyniku (ZL-21), pliki wsadowe są usuwane po przetworzeniu (ZL-22), nie ma pamięci podręcznej wyników (ZL-31), a żaden adres nie jest wysyłany do usługi zewnętrznej (ZL-30).
Jeszcze nie deklarowane
- Hosting wyłącznie w UE: dostawca hostingu i region nie zostały jeszcze opublikowane. [À VÉRIFIER]
- Podmioty przetwarzające i umowa powierzenia przetwarzania danych (DPA): zostaną opublikowane, z podpisem online, przed uruchomieniem. [À VÉRIFIER]
- Certyfikaty: żadne nie jest deklarowane. ISO 27001 planowany jest na późniejszy etap.
Źródła danych i licencje
Opieramy się na oficjalnych danych otwartych na otwartych licencjach (dla Francji Licence Ouverte 2.0). Każda odpowiedź API zawiera listę atrybucji ze wskazaniem źródeł. Dane na licencjach share-alike, takie jak OpenStreetMap, znajdują się w osobnym indeksie i nigdy nie są łączone z indeksem oficjalnym.
Pytania o zgodność
Czy mogę zweryfikować te zobowiązania?
Każde zobowiązanie wskazuje test automatyczny, który je sprawdza. Testy uruchamiają się przy każdej zmianie; jeden z nich kończy się niepowodzeniem, jeśli wskazany test zniknie lub wykaz logów przestanie odpowiadać kodowi. Dostęp do zestawu testów na potrzeby audytu pozostaje do ustalenia. [À VÉRIFIER]
Czy logujecie mój adres IP?
Aplikacja nie: jej log dostępu nie zawiera adresu IP, user-agenta ani klucza API (ZL-01). Również ingress przed nią musi mieć wyłączony log dostępu; to ustawienie infrastruktury, wskazane wyżej jako poza zakresem testów.
Jak długo przechowywane są wyniki wsadu?
Domyślnie godzinę po zakończeniu lub do usunięcia zadania (ZL-22). Plik wejściowy jest usuwany zaraz po zakończeniu przetwarzania.