<?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 (IT)</title>
    <link>https://jakubkornafel.com/log/it/</link>
    <atom:link href="https://jakubkornafel.com/log/it/feed.xml" rel="self" type="application/rss+xml"/>
    <description>Cosa sto costruendo, cosa si è rotto e cosa reggono davvero i fatti.</description>
    <language>it</language>
    <lastBuildDate>Thu, 27 Aug 2026 00:00:00 +0000</lastBuildDate>
    <item>
      <title>Una porta che non conta i soldi non è una porta</title>
      <link>https://jakubkornafel.com/log/it/gate-without-a-spend-ceiling/</link>
      <guid isPermaLink="true">https://jakubkornafel.com/log/it/gate-without-a-spend-ceiling/</guid>
      <pubDate>Thu, 27 Aug 2026 00:00:00 +0000</pubDate>
      <category>Build</category>
      <description>La mia pipeline sapeva dirti se il lavoro era buono. Non sapeva dirti che quella risposta era costata quattro ore e otto tentativi andati a vuoto.</description>
      <content:encoded><![CDATA[<p>Nella mia pipeline c'erano porte di cui andavo fiero. Criteri, soglie, un revisore che non era l'autore, un verdetto capace di dire di no.</p>

<p>Poi ho fatto loro una domanda a cui non hanno saputo rispondere: <em>quanto è costato?</em></p>

<p>Che l'artefatto fosse all'altezza, quello lo sapevano. Se arrivarci avesse richiesto quaranta minuti o quattro ore, dodici dollari o duecento, nessuna idea. Un'approvazione pulita al primo colpo e un'esecuzione che taglia il traguardo strisciando, al decimo assalto contro lo stesso problema irrisolto, per loro erano la stessa cosa.</p>

<p>Non lo sono. Solo una delle due è un sistema che funziona.</p>

<h3>Il limite che delimita la cosa sbagliata</h3>

<p>Avevo limiti di iterazione: dieci giri per fase, non uno di più. Sembrava controllo. Non lo è. Un limite di iterazioni delimita quante volte gira il ciclo, non quanto costa ogni giro, e nella mia pipeline un solo round di revisione si apre a ventaglio su otto verificatori che corrono in parallelo. Quel passo, da solo, può costare più di tutte le fasi precedenti messe insieme, e non c'è limite che se ne accorga.</p>

<p>Così ho scritto un libro mastro. Budget dichiarato prima di cominciare. Si controlla quando si passa da una fase all'altra e a ogni ritorno indietro, mai a lavoro in corso. Se attraversi un arco quando sei già oltre il tetto, l'esecuzione si ferma con un verdetto esplicito, invece di arrivare in fondo zitta e passarti il conto.</p>

<p>Quello che avevo sottovalutato è l'analisi del percorso. Conta la spesa che non ha portato avanti l'esecuzione — tutto quello che si sono mangiati i tentativi finiti in un ritorno indietro — e segnala i motivi che si ripetono. È l'ultimo numero quello che brucia. Un'esecuzione che passa al decimo tentativo identico è un'esecuzione fallita con una medaglia in prestito, e nei miei vecchi report non compariva da nessuna parte.</p>

<h3>Perché vale più di quanto sembri</h3>

<p>C'è uno studio di marzo che mi ha costretto a ripensare cosa aggiungo a un agente, e perché.</p>

<p>A un agente di programmazione hanno dato una cosa sola in più: una mappa di quali test coprono quale codice, consegnata come file di testo semplice, da leggere e basta. Le regressioni — test che prima passavano e hanno smesso — sono scese dal 6,08% all'1,82%. Il 70% in meno con un file.</p>

<p>Lo stesso studio aveva un secondo ramo. Al posto della mappa, istruzioni di procedura: lavora prima sui test, attieniti a questa disciplina. Le regressioni sono salite al 9,94%. Peggio che non toccare niente.</p>

<div class="pull">
  <span>La regola che mi tengo</span>
  <p>All'agente si dà contesto, non procedura. Dirgli come comportarsi ha peggiorato le cose, e si misura. Dirgli che cosa è vero le ha migliorate del 70%. Ogni istruzione che mi viene voglia di scrivere passa ormai da quel filtro prima che da qualunque altro.</p>
</div>

<p>Per lo stesso motivo il budget vive nel file di stato e non in un prompt che chiede all'agente di stare attento ai soldi. Nessuno sta attento a un numero che non vede.</p>

<div class="cta">
  <p><b>Se hai agenti che girano e non sai dire quanto ti è costata la settimana scorsa</b>, non stai governando un sistema autonomo: stai accumulando fattura. Io costruisco il pezzo che sa dire di no. <a href="mailto:jakubkornafel@gmail.com">Scrivimi qual è il sistema e qual è la scadenza.</a></p>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Il numero che citano tutti sta misurando un&#x27;altra cosa</title>
      <link>https://jakubkornafel.com/log/it/the-measurement-nobody-publishes/</link>
      <guid isPermaLink="true">https://jakubkornafel.com/log/it/the-measurement-nobody-publishes/</guid>
      <pubDate>Thu, 27 Aug 2026 00:00:00 +0000</pubDate>
      <category>Note</category>
      <description>Cambi l&#x27;harness e il benchmark si muove di tre punti. Cambi il modello e si muove di venticinque. Quindi l&#x27;harness quasi non conta — a meno di guardare quello che il benchmark non misura mai.</description>
      <content:encoded><![CDATA[<p>Questa settimana mi hanno fatto una domanda legittima: di quanto migliora un agente di programmazione un harness fatto bene? Un numero, per favore.</p>

<p>Sono andato a cercarlo.</p>

<p>Nelle classifiche pubbliche ogni tanto compare lo stesso modello che gira sotto due harness diversi. La distanza va dai tre agli otto punti percentuali. Ora tieni fermo l'harness e cambia il modello sotto: il punteggio si sposta di venticinque.</p>

<p>Se ti fermi lì, la conclusione si scrive da sola: l'harness quasi non conta, compra un modello migliore, vai a casa.</p>

<h3>Solo che non è questo a toglierci il sonno</h3>

<p>Quei benchmark misurano un compito, dentro un container, che passa o non passa. In produzione nessuno dorme male per un compito dentro un container.</p>

<p>Si dorme male per altro. Un sistema che crolla ogni pochi giorni. Un risultato che martedì prossimo non viene più uguale. Un verdetto che poi non riesce a controllare nessuno. Un'esecuzione che dichiara successo, e il file che dice di aver modificato se l'è inventato.</p>

<p>Ecco, per tutto questo — stabilità, riproducibilità, verificabilità — non esiste nessun benchmark pubblico. Il tentativo più vicino che ho trovato ha tre settimane, e la sua stessa verifica preregistrata si è chiusa senza conclusione.</p>

<p>Dove invece le cifre ci sono, non sono piccole. Uno studio ha tagliato le regressioni del 70% dando all'agente un solo file di contesto. Un altro ha misurato il 9,5% di compiti falliti in meno mettendo un critico che controlla il piano prima dell'esecuzione. Sono entrambi cambiamenti di harness. Nessuno dei due finisce in classifica.</p>

<div class="pull">
  <span>La risposta onesta</span>
  <p>Il numero che vuoi non esiste ancora. I numeri che esistono misurano un'altra cosa. E nello spazio fra gli uni e gli altri stanno i sistemi di produzione.</p>
</div>

<p>Per adesso, quindi, il lavoro tocca a te. Misura quello che ti interessa davvero — ogni quanto cade il sistema, quanto lavoro torna indietro da rifare, quante volte un verdetto regge la revisione — perché nessuno lo pubblicherà al posto tuo.</p>

<div class="cta">
  <p><b>Se hai quella misura e viene fuori brutta</b>, mi piacerebbe vederla sul serio. È esattamente il problema su cui lavoro. <a href="mailto:jakubkornafel@gmail.com">jakubkornafel@gmail.com</a></p>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Il mio sito mi ha mentito per tre settimane</title>
      <link>https://jakubkornafel.com/log/it/three-failed-deploys/</link>
      <guid isPermaLink="true">https://jakubkornafel.com/log/it/three-failed-deploys/</guid>
      <pubDate>Thu, 27 Aug 2026 00:00:00 +0000</pubDate>
      <category>Note</category>
      <description>Tre deploy falliti. Il sito continuava a rispondere 200. L&#x27;ho scoperto per caso, mentre cercavo tutt&#x27;altro.</description>
      <content:encoded><![CDATA[<p>Mi guadagno da vivere costruendo sistemi capaci di avvisare una persona quando qualcosa è andato storto.</p>

<p>Il mio sito ha passato tre settimane a servire una versione indietro di due commit. E io, tranquillo.</p>

<p>Com'è andata, in ordine. Il 6 agosto ho pubblicato due modifiche a una sottopagina. Sono partiti tre deploy. Tutti e tre falliti. Ognuno ha registrato una durata di build di zero millisecondi e il messaggio «Page build failed.». Nessun dettaglio, nessuna notifica, niente in posta.</p>

<p>Zero millisecondi vuol dire che il build non è nemmeno partito, quindi il mio codice non c'entrava. Era caduto qualcosa più a monte.</p>

<p>E il sito? Il sito benissimo. HTTP 200, certificato in regola, tutto che carica. Continuava a essere servito l'ultimo build riuscito, identico al giorno prima. Il guasto non aveva nessuna superficie visibile. Da fuori, dal mio browser, da quello di chiunque altro: un sito sano.</p>

<p>L'ho scoperto perché stavo armeggiando con altro e ho guardato lo stato dei deploy per curiosità.</p>

<h3>Il parallelo scomodo</h3>

<p>È lo stesso modo di fallire contro cui alzo porte tutti i giorni. Solo che è arrivato da un lato che non avevo difeso.</p>

<p>L'agente dichiara successo. I test passano. Il diff sembra pulito. Tutto quello che affiora in superficie dice che il lavoro è fatto, e l'unico modo per sapere il contrario è controllare qualcosa che chi riferisce non governa: aprire l'applicazione vera, interrogare lo stato vero, confrontare con qualcosa che l'ottimizzatore non può toccare.</p>

<p>Quel riflesso, con gli agenti, ce l'avevo. Con la mia pipeline di deploy no. E intanto stava lì, ventun giorni a servire contenuto stantio senza fiatare.</p>

<p>La riparazione, tra l'altro, è consistita nel togliere, non nell'aggiungere. Il sito è HTML puro, eppure ogni deploy lo passava per un motore di template di cui non ha mai avuto bisogno: 165 secondi per pubblicare mezzo megabyte. Un file vuoto dopo, il deploy è una copia di file e dura 19 secondi. Nove decimi del tempo se ne andavano in un passaggio il cui unico contributo reale era poter fallire.</p>

<div class="pull">
  <span>Cosa mi porto via</span>
  <p>Un sistema che non sa dirti di aver fallito ti lascerà credere che sia andato tutto bene per tutto il tempo che glielo permetti. Il silenzio non è uno stato. Se in tre settimane niente ha segnalato un problema, quella è un'affermazione da mettere alla prova, non un motivo per rilassarsi.</p>
</div>

<div class="cta">
  <p>Vai a guardare l'ultimo deploy riuscito della cosa di cui sei più sicuro. Ti aspetto. Se il risultato ti sorprende, <a href="mailto:jakubkornafel@gmail.com">raccontamelo</a> — io queste storie le colleziono.</p>
</div>]]></content:encoded>
    </item>
  </channel>
</rss>
