<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Jakub Kornafel — Log (PL)</title>
    <link>https://jakubkornafel.com/log/pl/</link>
    <atom:link href="https://jakubkornafel.com/log/pl/feed.xml" rel="self" type="application/rss+xml"/>
    <description>Co buduję, co się zepsuło i co z tego naprawdę wynika z dowodów.</description>
    <language>pl</language>
    <lastBuildDate>Thu, 27 Aug 2026 00:00:00 +0000</lastBuildDate>
    <item>
      <title>Bramka bez limitu wydatków to nie bramka</title>
      <link>https://jakubkornafel.com/log/pl/gate-without-a-spend-ceiling/</link>
      <guid isPermaLink="true">https://jakubkornafel.com/log/pl/gate-without-a-spend-ceiling/</guid>
      <pubDate>Thu, 27 Aug 2026 00:00:00 +0000</pubDate>
      <category>Build</category>
      <description>Mój pipeline umiał powiedzieć, czy praca jest dobra. Nie umiał powiedzieć, że ta odpowiedź kosztowała cztery godziny i osiem nieudanych podejść.</description>
      <content:encoded><![CDATA[<p>Miałem w pipelinie bramki, z których byłem dumny. Kryteria, progi, recenzent inny niż autor, werdykt, który potrafi odmówić.</p>

<p>A potem zadałem im pytanie, na które nie umiały odpowiedzieć: <em>ile to kosztowało?</em></p>

<p>Że artefakt jest wystarczająco dobry — to wiedziały. Czy dojście do tego werdyktu zajęło czterdzieści minut czy cztery godziny, dwanaście dolarów czy dwieście — nie miały pojęcia. Czystej akceptacji za pierwszym podejściem nie odróżniały od przebiegu, który dowlókł się do mety przy dziesiątej próbie z tym samym nierozwiązanym problemem.</p>

<p>To nie są te same wyniki. Tylko jeden z nich to działający system.</p>

<h3>Limit, który ogranicza nie to, co trzeba</h3>

<p>Miałem limity iteracji — najwyżej dziesięć pętli na fazę. Wyglądało to na kontrolę. Nie jest. Limit iteracji ogranicza liczbę przebiegów pętli, a nie koszt jednej tury, a u mnie jedna runda recenzji rozchodzi się na ośmiu weryfikatorów pracujących równolegle. Ten jeden krok potrafi kosztować więcej niż wszystkie wcześniejsze fazy razem i żaden limit tego nie zauważa.</p>

<p>Dopisałem więc księgę wydatków. Budżet zadeklarowany przed startem. Sprawdzany przy przejściu między fazami i przy każdym cofnięciu, nigdy w środku pracy. Przekroczysz krawędź, będąc już nad limitem, i przebieg staje z jawnym werdyktem, zamiast po cichu dojechać do końca i wystawić ci rachunek.</p>

<p>Najbardziej niedoszacowałem analizy trasy. Liczy ona wydatek, który nie posunął przebiegu do przodu — wszystko, co poszło na próby zakończone cofnięciem — i wyłapuje powtarzające się powody. Ta ostatnia liczba jest nieprzyjemna. Przebieg, który zaliczył bramkę przy dziesiątym identycznym podejściu, to przebieg nieudany z przypiętą plakietką „zdane". W moich starych raportach nie było tego widać w ogóle.</p>

<h3>Dlaczego to warte więcej, niż wygląda</h3>

<p>Jest marcowe badanie, przez które przemyślałem od nowa, co w ogóle dokładam agentowi.</p>

<p>Badacze dali agentowi kodującemu jedną dodatkową rzecz: mapę tego, które testy pokrywają który kod, podaną jako zwykły plik tekstowy do przeczytania. Regresje — testy, które wcześniej przechodziły i przestały — spadły z 6,08% do 1,82%. Spadek o 70% z jednego pliku.</p>

<p>To samo badanie miało drugą gałąź. Zamiast mapy agent dostał instrukcje proceduralne: pracuj testami naprzód, trzymaj się tej dyscypliny. Regresje wzrosły do 9,94%. Czyli gorzej, niż gdyby nie robić nic.</p>

<div class="pull">
  <span>Zasada, którą zostawiam</span>
  <p>Dawaj agentowi kontekst, nie procedurę. Mówienie mu, jak ma się zachowywać, mierzalnie pogorszyło sprawę. Mówienie mu, co jest prawdą, poprawiło ją o 70%. Każdą instrukcję, którą mam ochotę napisać, przepuszczam teraz przez ten test.</p>
</div>

<p>Dlatego budżet siedzi w pliku ze stanem, a nie w promptcie proszącym agenta, żeby uważał na pieniądze. Nikt nie będzie uważał na liczbę, której nie widzi.</p>

<div class="cta">
  <p><b>Jeśli puszczasz agenty i nie umiesz powiedzieć, ile kosztował cię zeszły tydzień</b>, to nie prowadzisz autonomicznego systemu — nabijasz rachunek. Buduję tę część, która potrafi odmówić. <a href="mailto:jakubkornafel@gmail.com">Napisz, co masz za system i jaki masz termin.</a></p>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Liczba, którą wszyscy cytują, mierzy nie to, co trzeba</title>
      <link>https://jakubkornafel.com/log/pl/the-measurement-nobody-publishes/</link>
      <guid isPermaLink="true">https://jakubkornafel.com/log/pl/the-measurement-nobody-publishes/</guid>
      <pubDate>Thu, 27 Aug 2026 00:00:00 +0000</pubDate>
      <category>Note</category>
      <description>Podmień harness, a benchmark drgnie o trzy punkty. Podmień model, a skoczy o dwadzieścia pięć. Czyli harness nie ma znaczenia — dopóki nie spojrzysz na to, czego benchmark nie mierzy wcale.</description>
      <content:encoded><![CDATA[<p>Dostałem w tym tygodniu uczciwe pytanie: o ile dobrze zbudowany harness poprawia agenta kodującego? Podaj liczbę.</p>

<p>Poszedłem więc po liczby.</p>

<p>Na publicznych rankingach da się czasem trafić ten sam model puszczony pod dwoma różnymi harnessami. Różnica: od trzech do ośmiu punktów procentowych. A wystarczy zostawić harness w spokoju i podmienić model pod spodem, żeby wynik ruszył się o dwadzieścia pięć.</p>

<p>Przeczytaj tylko tyle, a wniosek napisze się sam: harness prawie nie ma znaczenia, kup lepszy model, idź do domu.</p>

<h3>Tylko że nikt z nas nie boi się o to</h3>

<p>Te benchmarki mierzą jedno zadanie w jednym kontenerze, które przechodzi albo nie przechodzi. Nikt na produkcji nie traci snu przez jedno zadanie w jednym kontenerze.</p>

<p>Sen odbiera co innego. System, który wywraca się co kilka dni. Wynik, którego we wtorek nie da się powtórzyć. Werdykt, którego potem nikt nie zaudytuje. Przebieg, który melduje sukces, a plik, w którym rzekomo coś poprawił, po prostu sobie wymyślił.</p>

<p>I właśnie na to — na stabilność, powtarzalność, audytowalność — nie ma żadnego publicznego benchmarku. Najbliższa próba, jaką znalazłem, ma trzy tygodnie, a jej własny prerejestrowany audyt wyszedł nierozstrzygnięty.</p>

<p>Tam, gdzie liczby jednak są, nie są małe. Jedno badanie ścięło regresje o 70%, podając agentowi jeden plik z kontekstem. Inne zmierzyło spadek nieudanych zadań o 9,5% po dodaniu krytyka, który sprawdza plan przed wykonaniem. Jedno i drugie to zmiana w harnessie. Ani jedna, ani druga nie pojawi się w rankingu.</p>

<div class="pull">
  <span>Uczciwa odpowiedź</span>
  <p>Liczba, której chcesz, jeszcze nie istnieje. Liczby, które istnieją, mierzą co innego. A w szczelinie między jednym a drugim mieszkają systemy produkcyjne.</p>
</div>

<p>Na razie ciężar spada więc na ciebie. Mierz to, na czym naprawdę ci zależy: jak często pada system, ile pracy wraca do poprawki, jak często werdykt broni się w przeglądzie. Nikt nie opublikuje tego za ciebie.</p>

<div class="cta">
  <p><b>Jeśli masz taki pomiar i wygląda źle</b>, chętnie go zobaczę. Nad tym właśnie pracuję. <a href="mailto:jakubkornafel@gmail.com">jakubkornafel@gmail.com</a></p>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Przez trzy tygodnie moja własna strona mnie okłamywała</title>
      <link>https://jakubkornafel.com/log/pl/three-failed-deploys/</link>
      <guid isPermaLink="true">https://jakubkornafel.com/log/pl/three-failed-deploys/</guid>
      <pubDate>Thu, 27 Aug 2026 00:00:00 +0000</pubDate>
      <category>Note</category>
      <description>Trzy wdrożenia padły. Strona dalej odpowiadała dwustką. Wyszło na jaw tylko dlatego, że szukałem zupełnie czego innego.</description>
      <content:encoded><![CDATA[<p>Zawodowo buduję systemy, które umieją powiedzieć człowiekowi, że coś poszło nie tak.</p>

<p>Moja własna strona przez trzy tygodnie serwowała wersję sprzed dwóch commitów, a ja nie miałem o tym pojęcia.</p>

<p>Przebieg wydarzeń. 6 sierpnia wypchnąłem dwie zmiany na podstronie. Ruszyły trzy wdrożenia. Wszystkie trzy padły. Każde zapisało czas builda równy zeru milisekund i komunikat „Page build failed." Bez szczegółów, bez powiadomienia, nic w skrzynce.</p>

<p>Zero milisekund znaczy, że build nawet nie wystartował, więc nie chodziło o mój kod. Położyło się coś wyżej.</p>

<p>A strona? Strona miała się świetnie. HTTP 200, ważny certyfikat, wszystko się ładuje. Bo dalej szedł ostatni udany build, dokładnie tak jak dzień wcześniej. Awaria nie miała żadnej widocznej powierzchni. Z zewnątrz, z mojej przeglądarki, z czyjejkolwiek innej — zdrowa strona.</p>

<p>Znalazłem to tylko dlatego, że dłubałem przy czymś zupełnie niezwiązanym i z ciekawości zajrzałem w status wdrożeń.</p>

<h3>Nieprzyjemna analogia</h3>

<p>To dokładnie ten sposób psucia się, przed którym całymi dniami stawiam bramki. Przyszedł tylko od strony, której nie broniłem.</p>

<p>Agent melduje sukces. Testy przechodzą. Diff wygląda czysto. Wszystko na powierzchni mówi, że robota zrobiona, a jedyny sposób, żeby się przekonać inaczej, to sprawdzić coś, nad czym meldujący nie ma władzy: uruchomić prawdziwą aplikację, odpytać prawdziwy stan, porównać z czymś, czego optymalizujący nie dosięgnie.</p>

<p>Wobec agentów miałem ten odruch. Wobec własnego pipeline'u wdrożeniowego już nie, a on przez dwadzieścia jeden dni po cichu serwował nieświeżą treść.</p>

<p>Naprawa, nawiasem mówiąc, polegała na usuwaniu, nie na dokładaniu. Strona to czysty HTML, a mimo to każde wdrożenie przepuszczało ją przez silnik szablonów, którego nigdy nie potrzebowała: 165 sekund na opublikowanie pół megabajta. Jeden pusty plik później wdrożenie jest zwykłym kopiowaniem plików i trwa 19 sekund. Dziewięć dziesiątych czasu szło na krok, którego jedynym realnym wkładem była zdolność do popsucia się.</p>

<div class="pull">
  <span>Co z tego biorę</span>
  <p>System, który nie umie powiedzieć, że padł, będzie ci pozwalał wierzyć w sukces tak długo, jak mu na to pozwolisz. Cisza to nie status. Jeśli od trzech tygodni nic nie zgłosiło problemu, to teza do sprawdzenia, a nie powód do spokoju.</p>
</div>

<div class="cta">
  <p>Sprawdź teraz ostatnie udane wdrożenie tej rzeczy, której jesteś najpewniejszy. Poczekam. Jeśli wynik cię zaskoczy, <a href="mailto:jakubkornafel@gmail.com">napisz do mnie</a> — zbieram takie historie.</p>
</div>]]></content:encoded>
    </item>
  </channel>
</rss>
