# AI i stary kod: odtworzenie syntetycznego przykładu

Autor materiału: redakcja ekspertodsztucznejinteligencji.pl.
Data wykonania: 12.10.2026. Wszystkie pliki tego pakietu są własnym materiałem na
licencji CC BY 4.0: https://creativecommons.org/licenses/by/4.0/ .
Przy ponownym użyciu podaj autora, link do artykułu i zaznacz zmiany.

Artykuł: https://ekspertodsztucznejinteligencji.pl/blog/ai-stary-kod-torvalds

## Co to jest

To mały, jawnie skonstruowany kalkulator rabatów i dostawy. „Legacy” opisuje rolę
pliku w ćwiczeniu, a nie jego rzeczywisty wiek. Nie jest to kod klienta, Linuksa
ani fragment z zewnętrznego repozytorium. Kod, wymagania, przypadki i refaktor
przygotował agent AI w jednej sesji. Nie było osobnego wywołania płatnego API,
ślepej próby modelu ani zespołu ludzkich programistów.

Agent znał wymagania, stare źródło, jawny błąd progu i przypadki. Nie wykonywaliśmy
benchmarku modeli: wersja modelu, losowanie i powtórzenia generowania nie były
kontrolowanymi zmiennymi. Wkład AI polegał na wytworzeniu i podziale kodu w tej sesji.
Pliki pozwalają powtórzyć sprawdzenie gotowego refaktoru, nie odtworzyć generowanie
identycznej odpowiedzi modelu.

## Pytania, dane i wersje

1. Czy refaktor zmienił zachowanie oryginału w sprawdzonym zakresie?
2. Czy każda wersja spełnia osobno zapisane reguły?
3. Czy test potrafi wykryć cztery wybrane, celowo wadliwe polityki?

`legacy-ai-protokol.md` zawiera pełną umowę wejścia i wyjścia. Kwoty są w groszach.
VIP ma 15% rabatu, SAVE10 10%, a większy rabat wygrywa. Zaokrąglenie rabatu to
połówka w górę do grosza. Kurier kosztuje 1499 groszy, a od 20 000 groszy po rabacie
jest bezpłatny. Odbiór i pusty koszyk mają koszt dostawy równy zero.

Porównywane wersje:

- `original`: krótki, celowo mało czytelny program; próg dostawy błędnie używa `>`.
- `refactor`: walidacja, rabat i dostawa w osobnych funkcjach; zachowuje `>`.
- `fixed`: względem refaktoru zmienia tylko operator progu na `>=` oraz nagłówek pliku.
- `oracle`: osobna implementacja reguł przez Decimal i ROUND_HALF_UP. Pozostałe
  wersje liczą rabat arytmetyką całkowitą. Oracle nie importuje ich funkcji.

Oracle jest oddzielnym kodem, lecz ma tego samego autora-agenta. Zgodność dwóch
implementacji nie wyklucza wspólnego niezrozumienia reguły. Dodatkowa kontrola to
16 jawnych przykładów z oczekiwanymi liczbami. W realnej firmie oczekiwane wyniki
musi zatwierdzić właściciel procesu, najlepiej z osobą niezależną od autora zmiany.

## Zamrożenie i przebieg

Protokół, 16 przykładów, konfiguracja wejść, oryginał i oracle powstały przed
uruchomieniem testowanego kodu. Zamrożono je 12.10.2026 o 17:54:35 UTC.
Ich sumy zapisano w `legacy-ai-freeze.json`. Dopiero potem powstały refaktor,
wersja fixed oraz skrypt. Skrypt sprawdza sumy zamrożonych plików przed testem.
Czas i hashe dokumentują przebieg tej sesji, nie są zewnętrznym znacznikiem czasu.

Pierwsze uruchomienie `python3 legacy-ai-check.py --write-results` zakończyło się
powodzeniem 12.10.2026 o 17:55:56 UTC. Nie zmieniono protokołu, danych, modułów ani
runnera po obejrzeniu wyniku. Później dodano opis, kartę odbioru, manifest i ZIP;
tryb weryfikacji ponownie wykonuje obliczenia bez zapisywania wyników.

Środowisko pierwszego przebiegu: Python 3.14.7, macOS 26.6.2, arm64.
Dokładny opis jest w `legacy-ai-results.json`. Biblioteki wyłącznie standardowe;
brak bibliotek numerycznych, GPU, połączeń sieciowych i klucza API. Skrypt używa
składni zgodnej z Pythonem 3.10+, ale uruchomienie potwierdzono na wersji 3.14.7.
Nie mierzono czasu wykonania ani pamięci jako metryk badania.

## Wyniki z 12.10.2026

Przegląd wyczerpujący dotyczy tylko całkowitych kwot 0–30 000 groszy włącznie
oraz 2 poziomów klienta × 2 kuponów × 2 rodzajów dostawy.
To `(30000 + 1) × 2 × 2 × 2 = 240008` wejść, nie 240 008 zamówień firmy.
Limit dozwolonego wejścia wynosi 1 000 000 groszy; cały ten przedział nie został
przejrzany. Oddzielnie sprawdzono jego koniec w 8 kombinacjach.

| Grupa | Liczba wejść | Original: różnice z oracle | Refactor: różnice z oracle | Fixed: różnice z oracle |
| --- | ---: | ---: | ---: | ---: |
| Macierz graniczna | 192 | 6 | 6 | 0 |
| Zakres wyczerpujący do 30 000 gr | 240 008 | 6 | 6 | 0 |
| Górna granica 1 000 000 gr | 8 | 0 | 0 | 0 |

Grupy częściowo się pokrywają. Nie należy dodawać ich liczebności jako unikalnych
przypadków. Refaktor i oryginał zgadzają się w każdej z tych grup. Naprawa zmienia
sześć wyników względem oryginału w zakresie wyczerpującym; wszystkie dotyczą tej
samej usterki granicy 20 000 groszy po rabacie.

Te sześć wejść to: standard bez kuponu 20 000 gr, standard z SAVE10 22 222 gr,
VIP 23 529 gr i 23 530 gr, w każdym z dwóch wariantów kuponu. Dostawa: kurier.
Są dwa sąsiadujące progi VIP, ponieważ rabat zaokrągla się do grosza.

Oracle zgadza się z 16 ręcznie wpisanymi oczekiwanymi wynikami. Original i refactor
odbiegają od czterech z nich, fixed od żadnego. Każda wersja odrzuca 12 zdefiniowanych
niepoprawnych wejść. Wyjście ma prawidłowe klucze i typy int; wejścia pozostają bez zmian.

Kontrole negatywne na 192 wejściach: ścisły próg daje 6 rozbieżności, sumowanie
rabatów 40, próg przed rabatem 15, a połówki zaokrąglane do parzystej 2.
Są to ręcznie skonstruowane wadliwe polityki, bez twierdzenia o pełnym pokryciu mutacji.

## Co zapisano

`legacy-ai-boundary-results.csv` zawiera pełne wejście i wszystkie wyniki dla 192
przypadków granicznych. `legacy-ai-results.json` zawiera liczniki oraz wszystkie
rozbieżności każdej grupy. Dla zakresu wyczerpującego zgodnych wyjść nie zapisano
pojedynczo. Ich wejścia jednoznacznie określają zakres i iloczyn kartezjański
z konfiguracji; runner odtwarza je w tej samej kolejności. Zapisano też SHA-256
kanonicznego strumienia wszystkich wejść i wyjść w każdej grupie.

Weryfikacja przelicza cały zakres i porównuje dokładny wynik JSON oraz CSV,
a nie wyłącznie deklarowane sumy lub słowo PASS. Sprawdza też pliki z manifestu.

## Odtworzenie po rozpakowaniu ZIP

W katalogu z rozpakowanymi plikami wykonaj:

```bash
python3 legacy-ai-check.py --verify
```

Oczekiwany rezultat: `status: PASS`, liczba przypadków 240008, różnice z oracle
`original: 6`, `refactor: 6`, `fixed: 0`, różnice original/refactor 0.
Weryfikator niczego nie instaluje i nie nadpisuje wyników. Bez przełącznika lub przy
zmienionym pliku kończy się błędem. Użycie `--write-results` na opublikowanym pakiecie
zakończy się odmową nadpisania pierwszego przebiegu.

Manifest obejmuje pliki wejść, kodu, wyników, instrukcji i karty. Nie obejmuje
samego siebie ani ZIP-u, aby uniknąć cyklu sum. Manifest nie jest podpisem cyfrowym;
sprawdza zgodność posiadanych plików, a nie tożsamość autora.

## Pliki

- `legacy-ai-protokol.md`: pytania, reguły, miary, ograniczenia i kolejność pracy.
- `legacy-ai-cases.json`: 16 przykładów z wynikiem, macierz, zakres, 12 złych wejść.
- `legacy-ai-freeze.json`: moment zamrożenia i SHA-256 czterech plików wejściowych.
- `legacy-ai-original.py`, `legacy-ai-refactor.py`, `legacy-ai-fixed.py`: wersje kodu.
- `legacy-ai-oracle.py`: osobna realizacja reguł.
- `legacy-ai-check.py`: test, cztery kontrole negatywne i weryfikator odtworzenia.
- `legacy-ai-results.json`: wynik pierwszego przebiegu, środowisko i rozbieżności.
- `legacy-ai-boundary-results.csv`: 192 pełne wiersze wyników.
- `legacy-ai-karta-odbioru.md`: szablon do wypełnienia dla własnej zmiany.
- `legacy-ai-README.md`: ta instrukcja.
- `legacy-ai-manifest.json`: sumy plików pakietu.

## Ograniczenia i interpretacja

Błąd jest celowy i znany, a moduł niewielki. Test demonstruje różnicę między
zachowaniem a zgodnością z regułami. Nie jest oceną umiejętności AI znajdowania
nieznanych błędów, testem konkretnego produktu ani dowodem opłacalności refaktoru.
Nie mierzy ludzkiego czasu analizy, przeglądu czy poprawek. Nie ma losowej próby,
wnioskowania statystycznego, przedziału ufności ani podstaw do uogólnienia odsetka
błędów na systemy firmowe.

Brak skutków ubocznych upraszcza przykład. Nie sprawdzono bazy danych, uprawnień,
konkurencji zamówień, powtórzeń żądań, płatności, zwrotów, podatków ani integracji.
Zgodność w ograniczonej dziedzinie nie dowodzi równoważności dla całej dozwolonej
dziedziny. Spełnienie fikcyjnych reguł nie dowodzi, że takie reguły są właściwe
biznesowo. Karta odbioru wymaga dostosowania do rzeczywistego procesu i ryzyka.
