# Odpowiedź na krytykę — iteracja 2 | Uwaga z przeglądu | Zmiana | Dowód regresji | | --- | --- | --- | | Mapa cylindrów i dropdown nadpisywały sobie stan | oba widgety korzystają z jednego klucza session state; kafelki ustawiają go callbackiem | `test_cylinder_grid_and_detail_selector_share_state` | | Status `WYMAGA WERYFIKACJI` był nieosiągalny | status zależy bezpośrednio od label/severity; `unknown` bez nazwanej usterki ma dedykowany status | `test_unknown_only_engine_requires_verification` | | Engine Health 0–100 był arbitralny | liczba została usunięta; UI pokazuje najwyższe rzeczywiste severity i porządkowy triage | testy explainability + smoke UI | | OOD otrzymywał sztuczny confidence 50–99% | score OOD jest `NaN`; UI nazywa pozostałe wartości score modelu i wyjaśnia brak kalibracji | `test_diagnostics_are_complete_for_the_application` | | Globalny próg OOD mógł reagować na ogólny szum jednostki | override wymaga 7.25 mV **i** 2.5× mediany anomalii własnego silnika | `test_globally_noisy_engine_is_not_treated_as_isolated_ood` | | Stare CSV wyglądały jak finalne metryki | artefakty przeniesiono do `archive/legacy_experiments/`; skrypty mają nagłówki statusu | kontrola struktury repo + README archiwum | | Docstring finalnego modelu nie opisywał faktycznych cech | opis wskazuje signed/absolute deviation, ratio delta i statystyki | `final_pipeline.py` | Po zmianie OOD ponownie wykonano pięć seedów grouped CV dla clean i masked 5%. Wyniki pozostały bez zmian: - clean: Macro F1 `0.9811`, severity `0.9298`, Raw Score `0.9683`, - masked 5%: Macro F1 `0.9829`, severity `0.9333`, Raw Score `0.9705`. Pełny pakiet po iteracji: `32/32` testów oraz poprawny healthcheck Streamlit `ok`.