Śmieci na wejściu, śmieci na wyjściu czyli kilka spostrzeżeń dotyczących jakości SLPS

23 maja 2024


Tytułowa fraza to jedna z pierwszych prawd, jaką poznają studenci informatyki - jeśli nakarmisz swój algorytm felernymi danymi, po ich przetworzeniu otrzymasz bezwartościowe śmieci.

Taka refleksja przychodzi mi na myśl po kilku tygodniach obcowania z danymi Systemu Losowego Przydziału Spraw. Ten artykuł miał być o czym innym - chciałem udokumentować dostrzeżone błędy, popełnione przez twórców SLPS w algorytmach wyliczania kosztu spraw, uwiecznione w raportach losowań. Okazało się jednak, że to raporty losowań są pełne defektów. SLPS też jest pełen defektów. Wyszukiwarka raportów także. I nikogo to nie obchodzi.


O smutnym przypadku losowania sprawy IX LS 989/22 (i dziesiątek tysięcy innych też)

Kilka dni temu poprosiłem obserwujących mnie w social mediach o pobranie z witryny polskich sądów raportu losowania sprawy nr IX LS 989/22 i publikację skrótu SHA1 tego dokumentu (8a9445b8e49ab2efb39fce61318d2592cc73c768). To słynny przypadek 27-krotnego losowania jednej sprawy sądowej, z której wyłączano kolejno przeszło dwudziestu sędziów - wspominałem o tym w jednym z poprzednich tekstów.

Ten i inne dokumenty wskazywały, że powtórne losowania miały niewłaściwy koszt, klonowany z pierwszego losowania. Wystarczy zajrzeć do wnętrza tego dokumentu z 16 maja 2023, by znaleźć w poprzednich raportach 26 powtórzeń kosztu wynoszącego 1,33 sprawy przeliczeniowej. Jedynie najnowsze losowanie miało inny koszt sprawy, co zasugerowało mi, że w pewnym momencie błąd usunięto. Ale byłem głupi.

Infografika

Ponieważ tekst miał być wszechstronnie udokumentowany, zebrałem kilkadziesiąt takich przykładów i wrzuciłem koszty powtarzanych losowań na wspólny wykres. Spodziewałem się ujrzeć dzień poprawki systemu losującego. Okazało się, że takiego dnia nie ma. Niezależnie od daty, wszystkie raporty z powtórnych losowań - prócz najnowszego - miały identyczny koszt.

Sięgnąłem po wcześniejszego PDF-a z 23 marca 2023. Ujrzałem 25 powtórzeń kosztu 1,33 - ale najnowsze losowanie ujawniało koszt sprawy równy 1,00.

Sięgnąłem po wcześniejszego PDF-a z 17 marca 2023. Ujrzałem 24 powtórzenia kosztu 1,33 - ale najnowsze losowanie ujawniało koszt sprawy równy 1,21.

Sięgnąłem po wcześniejszego PDF-a z 6 marca 2023. Ujrzałem 23 powtórzenia kosztu 1,33 - ale najnowsze losowanie ujawniało koszt sprawy równy 1,21.

Widzicie już chyba, na czym polega problem. To generowanie wielostronicowych raportów z losowań jest obarczone błędem - ja tymczasem przyjmowałem publikowane tam wartości za prawidłowe. Dlatego właśnie poprosiłem was o ściągnięcie dokumentu i publikację na social mediach jego sumy kontrolnej. Nawet, jeśli usterka zostanie poprawiona, dziesiątki osób zaświadczyły już o jej istnieniu.

Moja analiza bazująca na uszkodzonych danych, którą przygotowywałem od wielu dni, poleciała do kubła. Będę musiał ponownie przetworzyć niemal 10 milionów dokumentów PDF, tym razem ignorując wszystkie strony oprócz pierwszej - bo wartości wskaźnika oparte na danych z kolejnych stron NIE SĄ PRAWDZIWE. Nie mogę też, jak dotąd, publikować jednego PDF-a z wieloma losowaniami tej samej sprawy - bo wszystkie strony prócz pierwszej i ostatniej zawierają błędy.

Inne śmieci w raportach z losowań

Myślicie, że opisany przypadek to jedyna niespójność w PDF-ach z raportami? Ale jesteście naiwni. Zajrzyjmy do losowania nr 26428021, sprawa I C 246/20. W nagłówku raportu z losowania zagubił się numer wydziału.

Infografika

Przykład z danych tegorocznych, których jeszcze nie ma w Monitorze SLPS. Tu też nagłówek jest niekompletny.

Infografika

Raportów z brakującymi nagłówkami nie ma wiele - ot, tyle tylko, by nie dało się napisać automatu sprawdzającego poprawność przetwarzania tej części dokumentu. Gdyby System Losowego Przydziału Spraw oraz mechanizm generowania PDF-ów były zbudowane w oparciu o bazę danych z odpowiednimi dziedzinami kolumn i prawidłowymi więzami spójności, generowanie takich dziwadeł byłoby niemożliwe.

A’propos więzów spójności - kiedy ostatnim razem widzieliście sprawę o numerze zero? Zaczęły się pojawiać w tym roku.

Infografika

Infografika

Do twórców mechanizmu generującego PDF-y z raportami też mógłbym mieć kilka pytań. Jednym z nich byłoby: dlaczego raport z jedynego losowania sprawy III AUa 1474/19, przeprowadzonego w dniu 5.12.2019, był generowany 166 razy między 1.01.2022 a 10.11.2022? W otrzymanych z Ministerstwa Sprawiedliwości plikach PDF otrzymałem tyle właśnie kopii tego raportu, różniących się wyłącznie datą wygenerowania dokumentu umieszczoną w stopce.

Dwa miliardy spraw w plecy

Co powiecie na trójkę sędzin z Nowego Sącza, które muszą szybciutko rozsądzić po dwa miliardy sto czterdzieści siedem milionów spraw, aby nadrobić zaległości?

Infografika

Objaśnienie dla nie-programistów - wartość ta nieprzypadkowo zbliżona jest do liczby -2,147,483,648, będącej dolną granicą wartości mieszczących się w 32-bitowej zmiennej całkowitej ze znakiem. To typowy objaw przepełnienia zakresu, o co naprawdę niełatwo w środowisku .NET, pod kontrolą którego działa System Losowego Przydziału Spraw.

A że przy tych minus dwóch miliardach widzimy ułamki? To już rezultat spieprzenia tematu na kilku poziomach naraz - komuś najpierw udało się doprowadzić do przepełnienia wartości lub rzutowania między niezgodnymi typami, by potem rezultat potraktować jako wartość zmiennoprzecinkową. Ekstraklasa programowania.

Po raz kolejny znajduje potwierdzenie mądrość śp. doktora Filipiaka, że każdego specjalistę można zastąpić skończoną liczbą stażystów. Jednocześnie gratuluję Asseco wygrania przetargu na „Usługi wsparcia i modyfikacji Systemu Losowego Przydziału Spraw”. Czuję, że to będzie świetnie wydane 8,661,660 zł.

Aby było jasne - każdy program ma błędy, w praktyce każda wersja dowolnej aplikacji wydawanej na rynek zawiera nieprawidłowości znane autorom. Jeśli usterka nie powoduje utraty danych, nie prowadzi do nieodwracalnych szkód i ma ograniczony zakres oddziaływania, to nie będzie traktowana jak błąd blokujący, zostanie poprawiona później.

Tyle tylko, że SLPS poprawiany nie jest. Takie same dwumiliardowe wskaźniki obciążenia znajdziemy na początku roku 2022, co na końcu 2023 i dalej. W tym czasie błąd dotknął co najmniej dziesięcioro sędziów z trzech różnych sądów i pojawił się w ponad sześciu tysiącach losowań. To oznacza, że albo osoby odpowiedzialne za SLPS mają na to wywalone, albo wręcz odpowiada im korzystanie z systemu w oczywisty sposób wadliwego.

Z ostrożności procesowej dopuszczę jeszcze dwie możliwości - może byłem pierwszą osobą, która spojrzała na te liczby, albo wszyscy uznali, że dwumiliardowe zaległości mają sens, przecież system komputerowy nie może się mylić. Zwłaszcza taki rozwijany od sześciu lat, recenzowany przez Najwyższą Izbę Kontroli następująco: „Opisane powyżej błędy sprawiały, że SLPS nieprawidłowo liczył sędziom obciążenia, co przekładało się negatywnie na równomierność przydziału spraw. W grudniu 2018 r. Dyrektor DKO opracował koncepcję naprawy danych w bazie SLPS. Generalne przeliczenie wartości zgodne z tą koncepcją odbyło się 15 lutego 2019 r. Operacja ta okazała się skuteczna tylko częściowo i jednocześnie sama była przyczyną kolejnych nieprawidłowości w bazie danych. Dlatego w marcu 2019 r. wprowadzono do SLPS możliwość zerowania obciążeń, a w lipcu udostępniono użytkownikom arkusz Excel służący do ręcznego przeliczenia danych i rozpoczęcia przydziału od nowa.” (więcej soczystych cytatów w tym artykule)

Wyszukiwarka raportów czyli nie mamy pańskiego sądu i co nam pan zrobi

Na stronie https://portal.wroclaw.sa.gov.pl/#/slps znajdziemy scentralizowany Portal Informacyjny, do którego przekierowują wszystkie strony innych sądów. Obecna jest tam także Wyszukiwarka Raportów Systemu Losowego Przydziału Spraw.

Infografika

Wystarczy podać sąd, wydział, repertorium i numer sprawy wraz z rokiem, by pojawiła się możliwość pobrania raportu z losowania. Niestety - tylko najnowszego, więc nie powtórzycie mojej analizy z początku niniejszego tekstu.

Infografika

Ktoś złośliwy mógłby wykpić fakt, że na wyniki wyszukiwania czekamy często ponad minutę a w połowie przypadków wyszukiwanie całkiem zawodzi i widzimy nieprawdziwy komunikat o braku sprawy lub losowania. Postarajmy się być wyrozumiali - wyszukiwarka przechodzi najwyraźniej powikłania po niedawnej amputacji reCAPTCHY.

Smutne i znaczące jest co innego - osoby odpowiedzialne za ten portal nie dbają w ogóle o jego kompletność i aktualność. Co mam na myśli? Ano, wejdźmy do wyszukiwarki i tam kliknijmy Sąd Apelacyjny w Warszawie, który wydaje się duży i ważny. Tam wybierzmy VIII Wydział Karny. Widzicie już, w czym problem?

Wyszukiwarka nie uwzględnia istnienia VIII Wydziału Karnego Sądu Apelacyjnego w Warszawie. Nie zna zresztą prawie tuzina innych wydziałów sądów z całego kraju. To jeszcze nie wszystko. Brakuje w niej całego sądu! Jeśli nie wierzycie, proszę odnaleźć Sąd Rejonowy w Czeladzi. Ano nie ma, lista sądów jest wczytywana z tego zasobu, który podczas pisania niniejszego tekstu ma następującą zawartość. No i Czeladzi tam zwyczajnie brak.

Jeszcze w marcu zgłosiłem to do helpdesku Portalu Informacyjnego. Zgłoszenie rozwiązano z następującą uwagą: „Uprzejmie informuję, że sprawy dot. Sądu Rejonowego w Czeladzi są dostępne na Portalu Informacyjnym w Apelacji Katowickiej. Wydziały objęte publikacją są dostępne w zakładce ,,Zarządzenia" na Portalu Informacyjnym w wykazie dot. Sądu Rejonowego w Czeladzi.

No i ticket z głowy, czas pyknąć w Counter Strike’a. Napisałem jeszcze raz, o co chodzi, ale bez efektu. Proszę pozdrowić ode mnie obsługujących zgłoszenie SD-761621, świetna robota.

Co wynika z tego wszystkiego?

Krótko po starcie Monitora SLPS otrzymałem wiele pytań, czy da się dowieść, że losowania spraw w SLPS były lub nie były uczciwe. W tak naiwnym pytaniu dostrzegam tęsknotę za światem, w którym:

  1. Regulamin urzędowania sądów określa jednoznacznie sposób losowania spraw
  2. Przygotowano zgodny z regulaminem urzędowania sądów, spójny oraz kompletny projekt implementacji tego algorytmu
  3. System SLPS bezbłędnie implementuje ów algorytm
  4. Wyniki działania systemu, m.in. raporty z losowań, dają pełen wgląd w przebieg losowań
  5. Dostępne z zewnątrz elementy systemu, np. Wyszukiwarka raportów, dają dostęp do kompletu raportów

Powiem krótko - to nie jest świat, w którym żyjemy.

Dziś dowiodłem, że punkty 4 i 5 nie są spełnione. W kolejnych tekstach przyjrzymy się bliżej punktom 1-3, które nauczą nas nowego rozumienia pojęć „losowość”, „rozliczalność” oraz „wartość ilorazu mniejsza lub równa liczbie dwa”.

Tomek Zieliński

PS: zapraszam do obserwowania mojego profilu na Twitterze, LinkedInie i Facebooku.

PPS: strona Sądu Rejonowego w Choszcznie znów działa, po pięciu dniach odpoczynku spowodowanego brakiem aktualnego certyfikatu HTTPS. Ale czymże jest pięć dni wobec wieczności…



Nowszy artykuł: Nie otrzymałem kompletu raportów z losowań! »
Starszy artykuł: « Czym jest koszt sprawy