Wszystkie wpisy

2024 w QA - nowe kanały AI, ten sam ownership2024 w QA - nowe kanały AI, ten sam ownership

English

2024 w QA - nowe kanały AI, ten sam ownership

Grudzień 2024: Copilot Chat jest GA. Agenci i Workspace zostają nagłówkiem. Code review nadal nie jest GA. Piramida zostaje.

Automatyzacja

Po co recap

Jest 15 grudnia, niedziela, i zamykam rok, w którym AI dostało u mnie kilka nowych adresów i ani jednego podpisu pod merge’em. Rok temu zapisałem w grudniowym recapie zdanie, o którym sam uprzedzałem, że za rok zabrzmi nieprawdopodobnie: Copilot Chat w dniu tamtego wpisu nadal nie był ogólnie dostępny. Zestarzało się po czternastu dniach, bo ogólna dostępność przyszła 29 grudnia, a za kolejne czternaście dni minie rok, odkąd czat siedzi w tym samym stabilnym VS Code co reszta mojej roboty. W tym roku napisałem jedenaście wpisów. Ten jest ich rozliczeniem, a nie dwunastym tutorialem, więc znowu nie znajdziecie tu nowego pliku konfiguracyjnego.

W grudniu 2023 pytałem, czy AI weszło do mojego zespołu QA, czy tylko do hype’u, i rozpisałem “w zespole” na cztery warunki: nazwane zadanie, miejsce w procesie, wiersz w pipeline albo świadomy powód, dla którego go nie ma, i człowiek, który odpowiada za wynik. W tym roku zawężam pytanie do czwartego warunku: czy nowe kanały AI zmieniły to, kto podpisuje merge. Kanałem nazywam każde miejsce, w którym model zostawia tekst do przeczytania przez człowieka. Ownershipem nazywam podpis pod zdaniem, że zmiana jest gotowa do main.

Odpowiedź po dwunastu miesiącach jest taka. W 2024 AI dostało w moim QA nowe kanały: Chat GA w stabilnym VS Code, komentarz na pull requeście, opis screenshotu, szkic raportu z nightly i instrukcję asystenta. Nie dostało ownershipu merge’a i nie wyleczyło flake’ów z CI przez “self-healing”. 15 grudnia Copilot code review, czyli osobny produkt do automatycznej recenzji pull requestów, nadal nie jest w ogólnej dostępności. Piramida z lat 2021-2023 zostaje bez korekty. Krócej: więcej miejsc na szkic, ten sam człowiek na merge’u.

Fundament trzech lat

Zacznę tak jak rok temu, od tego, czego nowe kanały nie skasowały, bo to nadal większa część odpowiedzi.

Oś z 2021 stoi. Podsumowanie 2021 było o izolacji: kontener zamiast instalacji, stub zamiast cudzego środowiska, ziarno zamiast losowych danych. Testcontainers dla .NET z kwietnia 2021 nadal są u mnie kanonem runtime’u i lipcowa chmura tego nie zmieniła. Z tego samego roku jest eksperyment z Completions, a jego konkluzja wracała w 2024 częściej, niż się spodziewałem: dwa wywołania z tym samym wejściem nie muszą dać tego samego wyniku, więc model może szkicować, ale nie może być krokiem, od którego zależy merge. Wracałem do niej w styczniu przy pętli agenta, w czerwcu przy bocie na pull requeście i w październiku przy szkicu raportu z nocy, za każdym razem przy innym modelu.

Oś z 2022 też zostaje. Podsumowanie 2022 zamykało rok Copilotem w edytorze i startem Playwrighta. Copilot wyszedł z technical preview 21 czerwca 2022 i jego szary tekst przeżył u mnie cały 2024 bez zmiany roli: czat go nie zastąpił, tylko stanął obok. Podział testów po triggerze z września 2022 nadal ma trzy koszyki: pull request, main po merdżu i noc. W tym roku dokładałem do niego bota, chmurę dla kontenerów, axe i k6, i wszystko trafiło do istniejących koszyków, a nie do nowego. Porównanie narzędzi do visual regression z listopada 2022 zostało bramką dla pikseli przez cały rok, w którym modele nauczyły się opisywać obrazki.

Oś z 2023 to granica, którą w tym roku sprawdzałem: AI w szkicu i w edytorze, nie w ownershipie. W kwietniu 2023 recenzowałem sugestie Copilota w testach C# i z 41 przyjętych sugestii wieloliniowych bez zmian zostało 12. W maju dostałem Copilot Chat w preview, na VS Code Insiders z rozszerzeniem Nightly. W lipcu triage flake’ów z modelem dał 33 hipotezy, z których 9 potwierdziłem odtworzeniem. We wrześniu piramida się nie spłaszczyła, przyspieszył tylko jej dół. Rok 2024 zaczął się więc od czatu w ogólnej dostępności z 29 grudnia 2023, a nie od nowego ownershipu.

Nagłówki, które nie weszły do procesu

Pierwszy kwartał był przeglądem obietnic autonomii, które w rozmowach o testach padały najgłośniej. Tam, gdzie mogłem, sprawdzałem je tak samo: na syntetycznym demo, z liczbami i z pytaniem, kto podpisuje wynik.

W styczniu agenci. Repozytorium Auto-GPT powstało 16 marca 2023, a pierwszy tag ma datę 12 kwietnia 2023, więc temat nie był świeży, tylko głośny. Przez cztery wieczory dawałem pętli cel “napraw padający test logowania” i katalog z testami. W rozpisanym przebiegu na cztery kroki trzy poszły do skreślenia: data-testid, którego nie ma, waitForTimeout(5000), który nawet nie pomógł, i git commit -am bez odtworzenia i bez pull requesta. Prawdziwa przyczyna siedziała poza repozytorium, w fladze modalu zgody, którą sam włączyłem 8 stycznia w konfiguracji lokalnej aplikacji. Agent, który “naprawiłby” ten test, skasowałby sygnał. Zysk był wąski: w dwóch przebiegach na sześć dostałem szybszą listę podejrzanych.

W lutym self-healing. Hype dotyczył mechanizmu, a nie premiery: Mabl istnieje od 2017, Healenium ma linię 3.x od 9 października 2020, a Testim reklamował Smart Locators już w komunikacie o przejęciu przez Tricentis z 9 lutego 2022. Napisałem trzydzieści linii heurystyki bez żadnego modelu i puściłem przez nią dwie czerwienie po dwadzieścia razy. Heurystyka naprawiła zmieniony id przycisku 20 na 20 razy i to był uczciwy wynik. Endpoint /auth, który przestał odpowiadać, też zamieniła w zieleń 20 na 20 razy, bo przestawiła asercję z nagłówka “Pulpit” na “Zaloguj się”. Raport nie odróżniał jednej zieleni od drugiej. Flake ze środowiska nie leczy się podmianą lokatora, Playwright do 1.49.1 nie ma oficjalnego self-healingu, a triage z 2023 zostaje na swoim miejscu: najpierw odtworzenie, potem hipoteza.

W marcu dwa nagłówki naraz. 12 marca Cognition ogłosiło Devina jako “AI software engineer”, a ja odnotowałem datę, bo nie miałem go w rękach i nie miałem czego zmierzyć. Copilot Workspace był wtedy zapowiedzią z Universe z 8 listopada 2023. 29 kwietnia wszedł w technical preview z listą oczekujących i 15 grudnia nadal nie jest w ogólnej dostępności. Warunek z marca brzmiał: preview, które sam uruchomię, i to samo zgłoszenie dające w dwóch przebiegach ten sam zestaw plików. Do grudnia nie pokazałem tu ani jednego takiego przebiegu, więc nie piszę o Workspace jak o narzędziu.

Trzy miesiące, trzy obietnice autonomii i jedno zdanie, które ze stycznia przeszło do grudnia bez poprawki: suite nie ma autonomicznego właściciela. Ma izolację, trace i mnie.

IDE i para przy E2E

Szary tekst z 2022 został w edytorze z tym samym kontraktem: podpowiada linię, a ja ją przyjmuję albo nie. Nowością roku jest czat obok niego, w tym samym stabilnym edytorze i na tej samej subskrypcji za 10 dolarów. W maju 2023 potrzebowałem do tego Insidersa i rozszerzenia Nightly.

W marcu rozdzieliłem dwie rzeczy, które w rozmowach zlewały się w jedną. @workspace to agent w Copilot Chat, opisany w changelogu z 30 listopada 2023, który zbiera kontekst z kilku plików repozytorium i odpowiada tekstem w czacie. Copilot Workspace to osobny produkt, który ma prowadzić zmianę od zgłoszenia przez plan do pull requesta. Na pytanie o kilka plików testów @workspace dał mi trzy wskazania. Jedno przyjąłem, dwa skreśliłem: pierwsze dopisywało asercję złego hasła na koniec testu poprawnego logowania, drugie importowało z modułu ./locators, którego nie ma. Copilot Enterprise z 27 lutego, z czatem na github.com i podsumowaniami pull requestów, też nie jest Workspace i też nie ma go na moim koncie.

W kwietniu złożyłem z tego parę przy E2E: czat obok speca, runner 1.43.1 i jedno kryterium akceptacji, komunikat o błędnym haśle. Pięć szkiców, dwa wklejone, trzy skreślone, a każde skreślenie złapał kto inny. getByTestId('login-error'), którego nie ma w aplikacji, złapał runner kosztem jednego timeoutu. toHaveAccessibleName, której na 1.43.1 nie było, złapał kompilator kosztem sekundy, a ironia tego skreślenia wyszła później: asercja przyszła w 1.44.0 6 maja, trzy tygodnie po wpisie, i w sierpniu zrobiłem z niej rdzeń automatu a11y. Nagłówek “Witaj z powrotem”, który jest na stronie zawsze, złapałem tylko ja, bo asercja była zielona od pierwszego uruchomienia. Para ma budżet dwóch powrotów do czatu, przy trzecim piszę asercję sam, a trace z trybu retain-on-first-failure, który doszedł w 1.43, czytam ja.

Ogólna dostępność czatu zmieniła więc adres szkicu, a nie adres werdyktu. Szkic powstaje teraz obok speca, werdykt wydaje runner, a podpis zostaje przy mnie.

Oczy i bramki

W maju sprawdziłem, co model z vision mówi o parach zrzutów, które bramka już oceniła. Bramką był toHaveScreenshot na 1.44.0, a zrzuty opisywały mi przez dwa wieczory gpt-4-turbo z vision i Claude 3. Przy 18420 różnych pikselach gate zrzucił build, a model napisał trzy zdania, z których jedno twierdziło, że układ się nie zmienił. Font przesunięty o dwa piksele dał 3112 różnych pikseli, czyli 0,0034 całości przy progu 0,01, więc gate milczał, a model napisał, że obrazy wyglądają tak samo. W gate miałem liczbę do zmiany i zmieniłem ją na maxDiffPixels: 400. W modelu nie było czego zmieniać. Na trzeciej parze model opisał przycisk “Rozpocznij teraz”, którego nie było na żadnym zrzucie. GPT-4o miało w dniu wpisu dwa dni i dostało jedno zdanie. Opis z modelu został moją prywatną lupą, a bramką dla pikseli zostaje to, co wybrałem w listopadzie 2022.

W sierpniu dołożyłem tani automat a11y: AxeBuilder z @axe-core/playwright 4.9.1 oraz toHaveAccessibleName i toHaveRole na Playwright 1.46.0. Na zepsutym formularzu axe zgłosił button-name i label, oba critical. Ciekawsze były dwa refaktory, przy których axe milczał: przycisk ze skopiowanym aria-label="Zamknij" i div w miejscu button. Złapały je asercje, bo wpisałem do nich, jak kontrolka ma się nazywać i czym ma być. Reguły z moimi tagami dotykają 20 z 55 kryteriów sukcesu WCAG 2.2 na poziomach A i AA, i to zwykle częściowo, więc zielony job nie jest certyfikatem WCAG. Zrzuty zepsutego i naprawionego formularza były identyczne co do bajtu, a przycisk przesunięty o 96 pikseli złapał visual, nie axe. Visual łapie wygląd, drzewo dostępności łapie nazwę i rolę, i żadne nie zastępuje drugiego. Dym a11y chodzi na pull requeście z tagiem @smoke, a pełny skan, razem z ciemnym motywem, w nocy.

Trzy miesiące później sierpniowy wpis zaczął się starzeć. 18 listopada, w 1.49.0, Playwright dostał toMatchAriaSnapshot, asercję, która porównuje stronę z oczekiwanym drzewem dostępności zapisanym w YAML-u. W sierpniowym tutorialu jej nie ma, bo nie było jej w runnerze. Nazywam ją tutaj, ale automatu na razie nie przepisuję. W sierpniu napisałem, że w a11y nie ma wzorca do nadpisania. Oczekiwane drzewo w YAML-u jest wzorcem, a każdy wzorzec przynosi pytanie, które rok temu zapisałem jako najtrudniejsze w visual regression: kto zatwierdza nowy.

Pin Playwrighta, na którym zamykam rok, to 1.49.1 z 10 grudnia. Component testing nadal ma w nazwie paczki słowo experimental, a oficjalnego self-healingu w runnerze nadal nie ma.

CI i runtime

W czerwcu model dostał głos na pull requeście. Podsumowanie z Copilot Enterprise jest poza moją subskrypcją, więc sprawdziłem PR-Agenta w GitHub Actions. Akcja Codium-ai/pr-agent@v0.22 jest przypięta tagiem, który przypina jednolinijkowy Dockerfile, a nie kod bota ani model, i to pierwsza rzecz, którą trzeba o tym jobie wiedzieć. Na syntetycznym pull requeście bot zostawił cztery uwagi. Przyjąłem jedną, o współdzielonym koncie TestUsers.Default. Skreśliłem trzy: “Relevant tests: No” przy specu leżącym w diffie, [Retry(3)] jako lekarstwo na niestabilność i toBeVisible() w miejsce toHaveText(). Każda ze skreślonych zostawiłaby pipeline zielony. Bot ma głos doradczy w osobnym, niewymaganym jobie, nie ma weta ani podpisu, a opcja “Allow GitHub Actions to create and approve pull requests” zostaje wyłączona. To inny kanał niż szary tekst z kwietnia 2023: tamto widziała jedna osoba z otwartym buforem, to widzi cały zespół.

Autofix dla CodeQL przeszedł z publicznej bety z 20 marca do ogólnej dostępności 14 sierpnia. To narzędzie bezpieczeństwa: proponuje poprawkę alertu code scanningu i nie ocenia, czy asercja coś sprawdza, więc nie liczę go jako recenzenta testów. Copilot code review 15 grudnia nadal nie jest w ogólnej dostępności i nie buduję na nim niczego w tym recapie.

W lipcu przeniosłem runtime kontenerów do Testcontainers Cloud, produktu Dockera po przejęciu AtomicJar ogłoszonym 11 grudnia 2023. Publiczna beta jest z 25 stycznia 2023. Daty ogólnej dostępności nie podaję, bo nie znalazłem komunikatu, który by ją datował, i nie będę jej wymyślał w recapie. Najważniejsze zdanie lipca dotyczy kodu, który się nie zmienił: ten sam ContainerBuilder chodzi lokalnie i w chmurze, test i asercja są nietknięte, a przygotowanie syntetycznego zestawu pod chmurę kosztowało jedną linię, WithBindMount zamienione na WithResourceMapping, bo worker nie widzi mojego dysku. Drugie dotyczy cichej zieleni. Biblioteka w wersji 3.9.0 bierze adres z tc.host przed DOCKER_HOST, a kiedy pod tym adresem nikt nie odpowiada, bez ostrzeżenia wraca do lokalnego socketu i test przechodzi na innym runtime. Dlatego krok agenta w CI jest czerwony, kiedy agent się nie połączy. Agent Cloud chodzi tylko w jobie z testami integracyjnymi, poza bramką pull requesta, a lokalny demon z 2021 zostaje kanonem.

W lipcu opisałem też rozliczenie z ówczesnej dokumentacji, z opłatą za osobę na desktopie i minutami workera na CI, i zastrzegłem, że jeżeli Docker je zmieni, zestarzeje się ten akapit, a nie reszta wpisu. 10 grudnia ruszyły nowe plany Dockera, w których Testcontainers Cloud nie ma już licencji na osobę, a minuty runtime’u są wliczone w płatne subskrypcje. To zmiana cennika z grudnia, a nie korekta lipca. Lipcowy akapit opisuje lipiec, a kod z tamtego wpisu się nie zmienił.

Load, raport, asystent

We wrześniu dołożyłem k6, osobno od E2E. Na syntetycznym logowaniu z regresem, w którym hasło liczy się synchronicznym PBKDF2, Playwright 1.47.1 był zielony i smoke k6 na dwóch VU też. Dopiero rampa do pięćdziesięciu VU pokazała p95 915,45 ms przy progu 300 ms i kod wyjścia 99, przy 2471 żądaniach, z których każde dostało 200. k6/browser w 0.53.0 jest zgrubnie podobny do Playwrighta, ale nie ma getBy* ani expect i zna tylko Chromium, więc k6 nie zastępuje suite funkcyjnej, tylko stoi obok niej: smoke protocol na main, load w nocy, na pull requeście nic. Najdroższa lekcja tamtego tygodnia też była zielona, bo próg na metryce bez żadnej próbki przechodzi, i dlatego skrypt przeglądarkowy trzyma strażnika w finally. OpenAI o1-preview z 12 września został nagłówkiem: profil ruchu i progi biorę z pomiaru, nie z czatu.

W październiku wróciłem do nocy od drugiej strony. Triage z 2023 był mikroskopem przyłożonym do jednego padnięcia, a październikowy szkic jest mapą całej nocy. Skrypt na 26 linii, bez żadnego modelu, zamienia trzy pliki JUnit z nocnej macierzy w wyciąg na 34 linie i sam oznacza nowe porażki. Dopiero ten wyciąg dostaje gpt-4o-mini-2024-07-18, przypięty do snapshotu, i składa z niego akapit za niecałe cztery setne centa. Przy dwunastu porażkach, w tym jednej nowej, model dobrze ułożył porządek i źle postawił wnioski: skreśliłem zmyślony job nightly-api, WebDrivera z radą o implicit wait w projekcie bez WebDrivera i podsumowanie, które zrzucało noc na środowisko i kazało ją powtórzyć. Akapit publikuje człowiek, a kolor nocy ustawia kod wyjścia runnera. Od października zapisuję przy każdym szkicu, ile zdań skreśliłem, a warunek wyjścia brzmi: jeśli skreślanie zacznie kosztować więcej niż pisanie od zera, szkic wypada z procesu.

W listopadzie złożyłem wewnętrznego asystenta QA i to słowo trzeba od razu zawęzić. To prywatny GPT z instrukcją z tych samych czterech klocków co w lutym 2023 i z trzema syntetycznymi plikami: proces.md, konwencje.md i nightly.md. Umiejętności są wyłączone, Actions nie ma, tokena do niczego nie ma, a w plikach nie ma żadnej nazwy klienta. Prior art jest z DevDay 6 listopada 2023, więc to nie premiera produktu, tylko praktyka. Z czterech pytań jedno przeszło czysto i właśnie dlatego pokazało, że w proces.md brakuje npm ci. Dwa straciły po jednym zdaniu, a jednym z nich była zasada “poczekaj na zielony nightly”, której nie ma w żadnym pliku. Pułapkę z jobem api-regression, którego nie ma, model potwierdzał, dopóki nie dopisałem reguły, a po zmianie odmówił w czterech rozmowach na pięć. Dwie z czterech recenzji skończyły się poprawką w proces.md, więc asystent okazał się najtańszym testem mojej dokumentacji. Warunek wyjścia jest zapisany z góry: jeśli pułapka dwa razy pod rząd potwierdzi job, którego nie ma, GPT idzie do szuflady, a pliki zostają w repozytorium.

Dwa jesienne nagłówki zostawiam jako daty. .NET 9 wyszedł 12 listopada, a projekty w repozytorium z przykładami zamykają rok na .NET 8, wydaniu LTS, bo przepisywanie zestawu w ostatnich tygodniach roku to zły pomysł, dokładnie jak rok temu z ósemką. 22 października Anthropic pokazał odświeżonego Claude 3.5 Sonnet i computer use w publicznej becie, czyli model, który patrzy na ekran i klika. W moim procesie nie kliknął niczego.

Co świadomie zostawiam na 2025

Wypisuję to z tego samego powodu co rok temu: za dwanaście miesięcy nie będę pamiętał, że były to decyzje, a nie przeoczenia.

Najpierw rachunek z zeszłorocznej listy. Zostawiłem na 2024 pięć pozycji i trzy dostały w tym roku swoje wpisy: agenci i self-healing w styczniu i lutym, Testcontainers Cloud w lipcu, GPTs i Assistants w listopadzie. Component testing nadal ma w nazwie paczki słowo experimental, a NUnit 4 nie dostał osobnego wpisu.

Copilot code review jako produkt w ogólnej dostępności. Warunek z czerwca obowiązuje każdego automatycznego recenzenta niezależnie od logo: wymagany status dopiero wtedy, kiedy kod i model są przypięte do wersji, dwa przebiegi na tym samym pull requeście dają te same uwagi i ani razu nie pada propozycja ponowienia albo osłabienia asercji jako sposobu na stabilność. Nawet wtedy weto, a nie podpis.

Agent, który sam utrzymuje suite i sam merguje. Warunek ze stycznia ma dwie połowy: dwa uruchomienia na tym samym wejściu dają ten sam diff, a propozycja umie powiedzieć “nie wiem, zapytaj człowieka o środowisko”. Najbliżej drugiej połowy podszedł w tym roku listopadowy GPT, choć agentem nie jest: po dopisaniu reguły mówił “nie wiem” w czterech rozmowach na pięć. Pierwszej połowy nie spełnił żaden kanał, który w tym roku sprawdzałem.

Testcontainers Cloud z datą ogólnej dostępności, jeśli kiedyś znajdę komunikat, który ją datuje. Do tego czasu piszę “produkt Dockera” i nie wymyślam dnia.

toMatchAriaSnapshot w automacie a11y. Wejdzie, kiedy będę umiał powiedzieć, kto zatwierdza zmianę oczekiwanego drzewa i czym ta akceptacja różni się od nadpisania wzorca zrzutu.

Edytor Cursor istnieje, ale nie przestawiłem na niego roku i nie robię z niego narzędzia roku.

Mierniki

Rok temu zapisałem dwie liczby: wall-clock wymaganych checków na pull requeście i odsetek nocnych przebiegów, w których coś padło bez zmiany w kodzie. Obie zostają. Dopisuję do nich pytanie, które w 2024 okazało się ważniejsze od obu: czy asercja coś sprawdza.

Wall-clock. Z tego, co w tym roku dokładałem, do wymaganych checków pull requesta weszła jedna rzecz: dym a11y z sierpnia, który na formularzu logowania kosztuje ułamek sekundy. Bot z czerwca chodzi w osobnym, niewymaganym jobie, smoke k6 i agent Cloud po merdżu na main, load i pełny skan a11y w nocy, a opis zrzutów, szkic raportu i asystent w ogóle nie są jobami. Jeżeli bramka pull requesta kiedyś zwolni, to nie przez AI, bo AI na niej nie ma.

Flake. Tu rok dał mi lekcję, której się nie spodziewałem. Cztery różne mechanizmy obiecywały niższe migotanie bez naprawy przyczyny: waitForTimeout(5000) od pętli agenta w styczniu, podmiana lokatora w lutym, [Retry(3)] od bota w czerwcu, a w październiku rada o implicit wait i podsumowanie, które kazało powtórzyć noc. Każdy z nich poprawiłby liczbę, którą mierzę, i zepsułby to, co ta liczba ma mierzyć. Żaden nie dostał miejsca w pipeline. Odsetek flake’ów jest dobrym miernikiem tylko dopóty, dopóki nikt nie optymalizuje go zamiast zestawu, a w 2024 pierwszy raz miałem pod ręką narzędzia, które robiły to chętnie.

Czy asercja coś sprawdza. Najdroższe błędy tego roku nie były czerwone. Heurystyka z lutego zamieniła awarię /auth w zieleń. Szkic z kwietnia asertował nagłówek, który jest na stronie zawsze. Dwa piksele z maja zmieściły się pod progiem. Trzy skreślone uwagi bota z czerwca zostawiłyby pipeline zielony. Biblioteka z lipca po cichu wróciłaby do lokalnego socketu. Axe z sierpnia milczał przy “Zamknij”. Playwright z września był zielony, kiedy p95 przekraczało próg ponad trzykrotnie, a próg bez próbek przechodził zawsze. Czerwony test zgłasza się sam. Zielony, który niczego nie sprawdza, czeka, aż ktoś go przeczyta.

Trzecia liczba przyszła w październiku: ile skreśliłem z tego, co napisał model. Zebrane z wpisów całego roku wygląda to tak:

Kanał Co dostałem Co nie przeszło recenzji
Styczeń, pętla agenta 4 kroki do celu 3 kroki
Marzec, @workspace w czacie 3 wskazania 2 wskazania
Kwiecień, czat obok speca 5 szkiców 3 szkice
Maj, opis zrzutów z vision 3 pary zrzutów nieprawdziwe zdanie w każdej parze
Czerwiec, bot na pull requeście 4 uwagi 3 uwagi
Październik, szkic z nocy 1 akapit 3 fragmenty
Listopad, GPT z plikami 4 odpowiedzi 2 zdania i 1 cała odpowiedź

Żaden wiersz nie ma zera. To notatki jednej osoby z syntetycznych demo, a nie benchmark, i nie porównuję wierszy między sobą, bo każdy kanał dostał inne zadanie. Ważniejsza od liczb jest kolumna, której w tabeli nie ma: kto złapał błąd. W kwietniu rozpisałem ją na runner, kompilator i człowieka. Runner i kompilator łapały to, co czerwone, a człowiek to, co zielone, i po dwunastu miesiącach to jest najkrótszy opis tego, po co jest recenzja.

Liczba, której nie mierzę, ma tę samą nazwę co rok temu. W tegorocznych wpisach odnotowałem siedem premier modeli: Gemini 1.5 Pro, Claude 3, GPT-4o, Claude 3.5 Sonnet, GPT-4o mini, o1-preview i odświeżonego Claude 3.5 Sonnet. Przypięty snapshot ma w moim procesie jeden, gpt-4o-mini-2024-07-18, i siedzi w szkicu, który publikuje człowiek. Liczba modeli nie mówi nic o jakości zestawu. Liczba skreśleń mówi przynajmniej tyle, że ktoś czytał.

Rok temu chciałem, żeby odpowiedź na pytanie “gdzie w tym procesie jest AI” nadal dała się powiedzieć w jednym zdaniu i żeby to zdanie zawierało czasownik “recenzuję”. Na koniec 2024 brzmi ono tak: model szkicuje w pięciu kanałach, a ja recenzuję każdy szkic i sam podpisuję merge. Jedno zdanie na 2025: chcę, żeby za rok to zdanie nadal zawierało czasownik “recenzuję”, nawet jeśli kanałów będzie dziesięć.

Do zobaczenia w styczniu.