# Protokół: Strands Decider 2B na polskich poleceniach (pre-rejestracja 11.10.2026, przed instalacją i pilotem)

## Pytania
1. Jak trafnie Strands Decider 2B (AWS, otwarte wagi, uruchomiony lokalnie) rozpoznaje intencję w krótkich poleceniach
   po polsku w porównaniu z tymi samymi poleceniami po angielsku?
2. Czy pewność modelu jest skalibrowana w obu językach?
3. Jak wypada wobec Clef-flash na tych samych parach i tym samym schemacie pytania (pomiar z 2–3.10.2026)?
Bez hipotezy kierunkowej. Raportujemy różnicę PL−EN z przedziałem ufności.

## Dane
- Te same co w pomiarze Clefa (katalog clef-pl-2026-10, PROTOKOL.md tam): MASSIVE 1.1, podział test, pl-PL i en-US,
  łączone po `id`. Archiwum SHA-256 4cba5faa11c71437928e17cb1b9b3d8b8e727e7ea363a3a9a8045e19c0491577 (dowiązanie 1.1).
- Analiza główna: 1000 par z `ids-proba.txt` (ta sama próba co analiza główna Clefa, wylosowana 2.10.2026 ziarnem 20261002).
- Pilot: 100 par z `ids-pilot.txt` (ten sam co w Clefie).

## Model i środowisko
- `StrandsAgents/strands-decider-2B-qwen3.5-v1-2610`, rewizja 216d1ccb46a9e9b036eb9187b248db98480f77d4 (model referencyjny
  od 9.10.2026), baza `Qwen/Qwen3.5-2B-Base` w rewizji, którą wskazuje konfiguracja checkpointu (zapisać w wynikach).
- Kod: github.com/strands-labs/strands-decider, commit 0ac22a97e584f3ccf87cc9b8cc5fdbad57cdf534 (9.10.2026), Apache-2.0.
- Apple M5 Pro 48 GB, `--device mps`, bf16 według domyślnej ścieżki ładowania. Wersje torch/transformers/peft zapisać.
- Wywołanie przez `load_engine(...).ask(state, questions)`, jedno zdanie na wywołanie, bez porcji.

## Schemat zapytania (identyczny jak w Clefie)
- `state`: samo zdanie (`utt`).
- Jedno pytanie `intent`, typ `choice`, `instructions`: "Which intent does the user's request express?"
- `criteria`: 60 opcji; identyfikator = etykieta MASSIVE, opis = etykieta z `_` zamienionym na spację.
- Pytanie dodatkowe (osobne wywołanie, żeby nie zmieniać kontekstu pytania głównego): `scenario`, typ `choice`,
  `instructions`: "Which area does the user's request concern?", 18 opcji = scenariusze MASSIVE (prefiks etykiety
  intencji), opis = nazwa scenariusza z `_` zamienionym na spację.

## Znane ograniczenia (zapisane przed wynikami)
- Twórcy wyłączyli `massive_intent` (`mteb/amazon_massive_intent`, tylko `en`) z treningu, ale użyli go do kalibracji
  i ewaluacji (data/sources.md w repozytorium). Wersja angielska mogła więc wpłynąć na kalibrację temperatur; polska nie.
  To może sprzyjać kalibracji po angielsku. Raportujemy to jako zastrzeżenie, nie korygujemy.
- Przy treningu duże zbiory etykiet przycinano do najwyżej 24 opcji; pytanie z 60 opcjami wychodzi poza ten zakres.
  Pytanie o 18 scenariuszy mieści się w nim.
- Twórca nie deklaruje obsługi polskiego; baza Qwen3.5 deklaruje 201 języków.

## Pilot
- 100 par, pytanie główne. Powtarzalność: pilot dwa razy; raport: zgodność top-1 i maksymalna różnica prawdopodobieństw.
- Reguła: mediana czasu ≤ 1 s na wywołanie → po analizie głównej (1000 par) liczymy pozostałe 1974 pary jako uzupełnienie,
  tak jak w Clefie. W przeciwnym razie tylko 1000 par. Pytanie o scenariusz tylko na 1000 parach analizy głównej.

## Miary (te same wzory co w clef-pl-2026-10/przygotuj.py i analiza.py)
- Trafność intencji (top-1), trafność obszaru z przewidzianej intencji, makro-F1 po intencjach.
- Kalibracja na surowym prawdopodobieństwie top-1 (nie na polu `confidence`, które Decider przeskalowuje):
  ECE (15 równych przedziałów) i wieloklasowy wynik Briera (suma po 60 opcjach, uśredniona).
- Różnica PL−EN: sparowany bootstrap (10 000 losowań, ziarno 20261002), 95-procentowy przedział; dokładny test McNemara.
- Porównanie z Clef-flash (drugorzędne): na tych samych 1000 parach, osobno dla każdego języka, różnica trafności
  Decider−Clef, sparowany bootstrap i McNemar; decyzje Clefa z clef-pl-2026-10/glowna-1000.jsonl.
- Trafność pytania o scenariusz (18 opcji), PL i EN, z bootstrapem różnicy.
- Tokeny wejścia z pola `usage.input_tokens`, średnia i mediana, PL/EN. Czas: mediana na wywołanie, tylko opis środowiska.

## Nie mierzymy
- Innych wariantów (v19, v21, Gemma 4), MLX, CPU. Zadań spoza MASSIVE. Dłuższych tekstów.
- Rekordy z błędem idą do kategorii „nie zmierzono”, nie do mianownika.

## Dziennik zmian
- 11.10.2026: protokół zapisany przed instalacją pakietu i pobraniem wag.
- 11.10.2026, ok. 17:30, pilot: dwa przebiegi po 100 par (200 decyzji każdy), bez błędów; decyzje top-1 200/200 zgodne,
  maksymalna różnica prawdopodobieństw 0. Mediana czasu 0,235 s na wywołanie (≤ 1 s), więc według reguły po analizie
  głównej liczymy też uzupełnienie (1974 pary). Trafność pilota: PL 69/100, EN 74/100 (do wiadomości; analiza główna
  liczona osobno na 1000 parach). Środowisko: Python 3.11.15, torch 2.14.1, transformers 5.19.0, peft 0.21.2; baza
  Qwen/Qwen3.5-2B-Base w rewizji b1485b2fa6dfa1287294f269f5fb618e03d52d7c (provenance.json checkpointu: „inferred: Hub main
  at training time”). `causal_conv1d` niezainstalowany, transformers używa ścieżki referencyjnej (wolniej, te same wyniki).
  Kolejność przebiegów (przebiegi.sh) ustalona przed wynikami głównymi: główna 1000 par, scenariusz 1000 par, uzupełnienie.
- 11.10.2026, ok. 17:40, analiza główna (analiza.py → wyniki.json): 2000 decyzji intencji i 2000 decyzji o scenariusz,
  bez błędów. Analizy dodane po fakcie (poza protokołem, tak opisane w tekście): trafność przy polu `confidence`
  zwracanym przez model (progi 0,8 i 0,9) oraz najczęstsze pary pomyłek. Uzupełnienie (1974 pary) liczy się dalej;
  jego wynik dopiszemy bez zmiany analizy głównej.
- 11.10.2026, ok. 17:50, uzupełnienie zakończone: 1974 pary (3948 decyzji), bez błędów. Analizy głównej nie zmieniano.
  Uzupełnienie: PL 63,8%, EN 70,4%, różnica −6,5 punktu (od −8,2 do −4,9). Cała część testowa (2974 pary): PL 64,0%,
  EN 70,4%, różnica −6,4 punktu (od −7,7 do −5,0), McNemar p < 0,001.
- 11.10.2026, ok. 18:05, wariant dodatkowy zapisany PRZED uruchomieniem (po analizie głównej, więc w tekście jako analiza
  po fakcie): to samo pytanie o intencję na tych samych 1000 parach, ale z 24 opcjami zamiast 60, czyli w zakresie,
  na którym model trenowano. Opcje dla pary: poprawna etykieta + 23 etykiety losowane z pozostałych 59 przez
  random.Random(f"20261002-{id}"), ten sam zestaw dla PL i EN, kolejność alfabetyczna jak w pytaniu głównym. Miary:
  trafność PL i EN, różnica PL−EN z bootstrapem i McNemarem, ECE. Plik: wariant-24.jsonl. Odniesienie twórców: MASSIVE en
  przy najwyżej 24 losowych opcjach, 89,0% (eval/internal/recipe_heldout.json karty v1-2610). Uwaga: przy 24 opcjach
  zgadywanie daje 1/24 zamiast 1/60, a łatwość zależy od wylosowanych dystraktorów.
- 11.10.2026, ok. 18:20, wariant z 24 opcjami: 2000 decyzji, bez błędów. PL 76,0%, EN 82,9%, różnica −6,9 punktu
  (od −9,1 do −4,8); względem 60 opcji +11,6 (PL) i +12,5 (EN) punktu; ECE 0,051 i 0,035.
- 11.10.2026, doprecyzowanie po recenzji: „surowe prawdopodobieństwo” w planie oznacza prawdopodobieństwo wybranej opcji
  zwracane przez model, czyli już po jego kalibracji temperaturą; pole `confidence` to (N·p − 1)/(N − 1). Porównanie
  z Clef-flash czyta opublikowany plik ../clef-pl-2026-10/decyzje.jsonl (te same decyzje co glowna-1000.jsonl Clefa).
  Surowy wariant-24.jsonl jest opublikowany w zwartej postaci jako decyzje-24-opcje.jsonl.
- 11.10.2026, po recenzji, analizy po fakcie wariantu z 24 opcjami: rozbicie zmiany trafności względem 60 opcji według
  tego, czy intencja błędnie wybrana przy 60 opcjach była wśród 24 opcji, oraz trafność przy polu `confidence` od 0,9. Do tego trafność rozkładu z pytania o 60 opcji zawężonego do tych samych 24 opcji, liczona z surowego zapisu analizy głównej (klucz wariant_24_opcje.zawezony_rozklad_60).
  Wyniki w wyniki.json, klucz wariant_24_opcje, pole po_fakcie dla każdego języka.
