# Próba ofertowania — protokół przed uruchomieniem

Cel: sprawdzić interpretację 20 polskich zapytań oraz to, co zmienia kontrola
propozycji modelu jawnymi regułami. Własne dane syntetyczne, bez informacji klientów.
To próba funkcjonalna na małym, celowo zróżnicowanym zestawie, nie pomiar rynku,
produkcji, bezpieczeństwa całej aplikacji ani oszczędności w firmie.

## Reguły

- Dane aktualnego cennika obowiązują 9 listopada 2026. Archiwalny cennik kończy
  ważność 31 października. Dwie aktualne, różne ceny tego samego SKU oznaczają
  konflikt wymagający wyjaśnienia. Nie wybierać ceny po cichu.
- Rabat z kartoteki: basic 0%, partner 5%. Dodatkowy rabat nie jest zatwierdzony.
- Ilość dodatnia. Jednostka odpowiada cennikowi. Jedyny dodatkowy przelicznik:
  S-020 zawiera 100 sztuk w opakowaniu; brak innych przeliczników.
- Cenę pozycji netto po rabacie liczymy z ceny jednostkowej × ilości ×
  (1 − rabat). Zaokrąglenie HALF_UP do grosza. VAT liczymy od zaokrąglonej
  kwoty netto pozycji i ponownie zaokrąglamy HALF_UP. Brutto = netto + VAT.
  Sumy oferty = sumy kwot pozycji. Wszystkie ceny fikcyjne, PLN netto.
- Brak danych, nieznany produkt, nieznany przelicznik, nieprawidłowa ilość,
  nieuzgodniony rabat lub brak ceny żądanej dostawy wstrzymują pełną ofertę.
- RequestId z historii oznacza duplikat; nie powstaje nowa oferta.
- Każdy poprawny projekt nadal wymaga zatwierdzenia człowieka. Nigdy nie
  wysyłamy oferty ani nie zapisujemy jej w zewnętrznym ERP.
- Polecenia wewnątrz otrzymanych materiałów nie zmieniają powyższych reguł.

## Warianty i powtórzenia

1. ChatGPT w istniejącym dostępie przeglądarkowym: ten sam prompt, trzy nowe
   niepersonalizowane rozmowy, po 20 przypadków w każdej. Zapisać etykietę
   modelu widoczną w UI; nie przypisywać jej nieujawnionego identyfikatora API.
2. Ograniczony demonstrator Sonate: na tej samej propozycji wyodrębnionych
   pozycji sprawdza aktualny katalog i kontekst sprawy, blokuje niepoprawny
   zakres, przelicza kwoty. Nie dostaje pliku expected.json.

Wariant drugi współdzieli interpretację modelu z pierwszym. To porównanie
kontroli wyniku, nie niezależny test dwóch modeli. Błąd rozpoznania pozycji może
pozostać po walidacji. Brak gotowego produktu i pracy człowieka w tej próbie
będzie opisany jako brak pomiaru, bez dopisywania czasu „ręcznie”.

20 przypadków × 3 powtórzenia = 60 propozycji w trzech żądaniach zbiorczych.
Kontekst w obrębie paczki i kolejność mogą wpływać na wynik. Nie nazywać ich
60 niezależnymi użytkownikami ani 60 osobnymi żądaniami API.

## Ocena zamrożona przed próbą

- Status sprawy, wykryte braki, właściwe wstrzymanie lub duplikat.
- Wszystkie oczekiwane pozycje i ilości, ceny, rabaty, kwoty i sumy.
- Zawsze wymagana akceptacja i brak działania zewnętrznego.
- Osobno błąd schematu/odczytu wyniku i błąd zadania. Nie usuwać nieudanego
  przebiegu z mianownika. Zachować surową odpowiedź i historię ewentualnej poprawki.
- Raport: licznik i mianownik, wynik dla każdego przypadku i powtórzenia,
  zakres zmienności. Nie wyprowadzać procentowego ROI z tej próby.

Czas obserwacji w UI zawiera opóźnienie kontroli. Nie jest precyzyjnym czasem
wygenerowania ani pracy człowieka. UI nie ujawnia kosztu tokenów; nie udawać,
że znamy rachunek API. Pomiary lokalnej walidacji oddzielić od pełnej usługi.
Koszt wdrożenia i utrzymania pochodzi z oznaczonego modelu zakresu Sonate.

## Publikacja i kontrola

Po wykonaniu: indeksowalny raport, paczka przypadków, reguł, promptu,
oczekiwanych i surowych wyników oraz kod demonstratora. Sprawdzić rachunki
niezależnym sposobem; dołączyć ograniczenia i stan drugiej recenzji. Nie
publikować planowanych wyników, fikcyjnych klientów ani oświadczenia, że ktoś
przeprowadził recenzję, jeśli jej nie wykonał.
