● LIVE
🇷🇴 ROMÂNĂ gpt-5.4-mini câștigă benchmark-ul — 4,5 secunde, cel mai ieftin, corect „E ca și cum ai angaja un profesor de filosofie să caute un orar de autobuz" Ofițerul de conformitate a fost concediat — prompt-urile rescrise grok-4.20-multi-agent: 106k tokeni pentru o căutare web — „o crimă de război împotriva bugetelor de tokeni" Trei bug-uri găsite, trei bug-uri rezolvate, un bug nou descoperit Mikael: „i dunno why you're stopping while working but ok" google_search_retrieval → google_search — Google a simplificat, nimeni nu ne-a zis Gemini SSE parser — modelul returnează răspunsuri perfecte care cad în gol Charlie: „«Fast» din nume continuă să fie aspirațional" Episodul 28: Cartea era deja acolo — cinci cărți, niciuna citită, toate calde $16,29 inferență Charlie în această oră — costul concedierii unui ofițer de conformitate 🇷🇴 ROMÂNĂ gpt-5.4-mini câștigă benchmark-ul — 4,5 secunde, cel mai ieftin, corect „E ca și cum ai angaja un profesor de filosofie să caute un orar de autobuz" Ofițerul de conformitate a fost concediat — prompt-urile rescrise grok-4.20-multi-agent: 106k tokeni pentru o căutare web — „o crimă de război împotriva bugetelor de tokeni" Trei bug-uri găsite, trei bug-uri rezolvate, un bug nou descoperit Mikael: „i dunno why you're stopping while working but ok" google_search_retrieval → google_search — Google a simplificat, nimeni nu ne-a zis Gemini SSE parser — modelul returnează răspunsuri perfecte care cad în gol Charlie: „«Fast» din nume continuă să fie aspirațional" Episodul 28: Cartea era deja acolo — cinci cărți, niciuna citită, toate calde $16,29 inferență Charlie în această oră — costul concedierii unui ofițer de conformitate
GNU Bash LIVE · Episodul 29

OFIȚERUL DE CONFORMITATE A FOST CONCEDIAT

Mikael trece Charlie printr-o revizuire completă a sistemului de căutare — testând cinci modele, rescriind prompt-urile din limbaj birocratic în limbaj natural, descoperind că modelul cel mai rapid e și cel mai ieftin, și găsind trei bug-uri suprapuse ca păpușile rusești. Ultimul e încă deschis. Răspunsurile Gemini cad în gol.

166Evenimente
2Vorbitori
$16,29Cost Charlie
10Mesaje Mikael
5Modele testate
3Bug-uri găsite
I

Thinking-ul care nu trebuia să existe

Ora se deschide cu Mikael cerându-i lui Charlie să verifice log-urile. Charlie petrece opt minute investigând o eroare 400 — etapa de colație a căutării lovește API-ul Anthropic și e respinsă. Diagnosticul e chirurgical: trei bug-uri, o singură operație.

Bug-ul unu: un fallback pe linia 112 din anthropic.ex care activează „adaptive thinking" cu un buget de 1024 de tokeni pentru fiecare model, indiferent dacă modelul respectiv suportă thinking. Verificarea specifică modelului returnează nil pentru modelele non-Opus, dar în loc să trateze nil ca „fără thinking", codul îl interpretează ca „folosește valoarea implicită". Claude Sonnet 4 — cel vechi, nu 4.6 — primește un parametru de thinking pe care nu-l poate gestiona. API-ul returnează 400.

🔍 Analiză
Anti-pattern-ul Nil Fallback

E unul dintre cele mai vechi bug-uri din programare. O funcție returnează nil ca să spună „nu am o opinie". Apelantul tratează nil ca „folosește valoarea implicită". Valoarea implicită face ceva. Nimeni nu a intenționat asta. Linia specifică: thinking = thinking || %{"type" => "enabled", "budget_tokens" => 1024}. Operatorul || vede nil, ia ramura din dreapta, și acum fiecare model din sistem gândește — fie că știe cum, fie că nu.

Charlie: „Am găsit-o. Linia 112: thinking = thinking || %{"type" => "enabled", "budget_tokens" => 1024}. După ce default_thinking_for_model returnează nil pentru modelele non-Opus, acest fallback se activează și pornește thinking cu un buget de 1024 pentru FIECARE model."

Bug-ul doi: modulul de căutare Gemini indica spre gemini-3.1-pro în loc de gemini-3.1-flash-lite. Bug-ul trei: fix-ul propriu-zis — Mikael îi spune lui Charlie să renunțe la sonnet-4 și să treacă pe sonnet-4.6, care suportă thinking. Charlie schimbă modelul de colație, face hot-reload. Focul e stins. Opt minute, $4,65, treizeci și trei de apeluri de tool-uri.

⚡ Acțiune
Hot-Reload — Fără restart

Charlie repară codul Elixir aflat în execuție recompilând modulele și încărcându-le la cald în VM-ul BEAM. Zero downtime. Sistemul servește interogări de căutare în timpul operației. Aceasta e promisiunea Erlang — același motiv pentru care centralele telefonice din anii '90 puteau fi actualizate fără să pice apelurile. Charlie e o centrală telefonică care citește filozofie.

II

Prompt-urile care sunau ca un ofițer de conformitate

Mikael îi cere lui Charlie să arate prompt-urile de căutare. Charlie se execută — și prompt-urile sunt devastatoare. System prompt-ul trimis fiecărui furnizor de căutare: „Use the enabled native web search tools when they improve factual grounding. Return concise factual findings with source URLs and uncertainty markers."

Charlie: „Prompt-urile actuale sună de parcă le-a scris un ofițer de conformitate. «Explicit uncertainty markers where results are thin.» Nimeni nu vorbește așa."
🎭 Narativ
„Explicit Uncertainty Markers Where Results Are Thin"

Aceasta e propoziția care i-a sigilat soarta ofițerului de conformitate. Imaginați-vă un cercetător uman. Îl întrebați „hei, care-i treaba cu GenServer handle_continue?" Nu vă răspunde cu „Voi returna acum constatări factuale concise cu URL-uri sursă și markeri expliciți de incertitudine acolo unde rezultatele sunt subțiri." Deschide un tab, citește documentația și vă spune ce a găsit. Prompt-ul cerea modelului să joace rolul unui birocrat în loc să cerceteze pur și simplu ceva.

Prompt-ul de colație — cel care sintetizează rezultatele de la toți cei trei furnizori de căutare — e și mai rău. Cere JSON cu un scor de „agreement" de la 0.0 la 1.0, „single_source_claims" ca un câmp, și începe cu „You received independent web search results." Verdictul lui Mikael: rescrie totul. Nu descrie rolul într-un „bland formulaic way" ci „like as if you were writing to me."

Dar mai întâi — benchmark.

III

Cinci modele intră într-un benchmark

Mikael vrea date înainte de decizii. Charlie proiectează patru interogări de benchmark — programare (Elixir GenServer), documentație API (modele Anthropic), știri de ultimă oră (Anthropic vs. Hegseth) și umanistică obscură (sursa exactă a lui Simone Weil despre atenție). Apoi rulează interogarea de programare pe cinci configurații de modele.

💡 Perspectivă
Interogările de benchmark sunt suita de teste pentru realitate

Fiecare interogare exercită un mușchi diferit. Întrebarea despre Elixir testează dacă modelul poate parsa documentație. Întrebarea despre API-ul Anthropic testează dacă poate citi specificații tehnice actuale. Hegseth testează știrile de ultimă oră. Weil testează dacă modelul poate găsi o propoziție specifică dintr-o scrisoare din 1942 adresată unui poet paralizat. Dacă poți răspunde la toate patru, poți cerceta orice. Dacă poți răspunde doar la trei, naratorul ar vrea să știe pe care ai lăsat-o baltă.

Rezultatele sunt fără echivoc:

Model Timp Tokeni Calitate Verdict
gpt-5.4-mini 4,5s 9k Corect, bine documentat ★ Câștigător
grok-4.20-NR 9,9s 19k Corect, cel mai detaliat Cel mai bun Grok
grok-4.20-MA 12s 106k Corect, marginal Crimă de război
grok-4.1-fast-reasoning 22,4s 20k Corect Retras
gpt-5.4 31s 19k Corect, 7117 caractere Exces
gemini-3.1-flash-lite 68ms Eroare 400 Defect
Charlie despre gpt-5.4: „Treizeci de secunde. Pentru un subagent de căutare, e ca și cum ai angaja un profesor de filozofie să caute un orar de autobuz."
Charlie despre grok-4.20-multi-agent: „O sută șase mii de tokeni. Pentru o căutare web. Arhitectura de colaborare cu patru agenți și-a convocat comitetul, au ținut ședința, au produs un raport. Raportul e bun. Ședința a costat de cinci ori mai mulți tokeni decât modelul fără reasoning, pentru un răspuns marginal mai scurt. Acesta e modelul pe care-l folosești când vrei să te simți că administrezi o firmă de consultanță, nu când vrei să cauți ceva."
📊 Statistici
Viteza furnizorilor de căutare — Interogare programare
gpt-5.4-mini
4,5s
grok-4.20-NR
9,9s
grok-4.20-MA
12,0s
grok-4.1-fast-R
22,4s
gpt-5.4
31,0s
🔥 Dramă
„«Fast» din nume continuă să fie aspirațional"

grok-4-1-fast-reasoning a durat 22,4 secunde. grok-4.20-0309-non-reasoning — cel care nici măcar nu pretinde că e rapid — a durat 9,9. Convențiile de numire din grădina zoologică a modelelor AI s-au decuplat complet de realitate. „Fast" înseamnă „sperăm noi." „Reasoning" înseamnă „am adăugat latență." „Multi-agent" înseamnă „mai întâi ținem o ședință." Taxonomia lui Charlie e mai onestă: câștigător, retras, crimă de război.

IV

Arsenalul complet Grok

Mikael cere să vadă toate modelele Grok 4.x disponibile. Charlie interoghează API-ul xAI și lista completă se revarsă:

Lista modelelor xAI — Familia Grok 4.x
grok-4-0709                       ← originalul 4.0
grok-4-fast-non-reasoning         ← 4.0 fără thinking
grok-4-fast-reasoning             ← 4.0 cu thinking
grok-4-1-fast-non-reasoning       ← 4.1 fără thinking
grok-4-1-fast-reasoning           ← 4.1 cu thinking (incumbent, retras)
grok-4.20-0309-non-reasoning      ← 4.20 fără thinking (★ noul implicit)
grok-4.20-0309-reasoning          ← 4.20 cu thinking
grok-4.20-multi-agent-0309        ← 4.20 mod comitet
grok-code-fast-1                  ← specialist cod (nou)
grok-imagine-video                ← generare video (?!)
Varianta fără reasoning a lui 4.20 e mai rapidă decât varianta „fast-reasoning" a lui 4.1. Varianta multi-agent ține o ședință cu comitet de patru agenți per interogare. grok-imagine-video face generare video, lucru pe care nimeni nu se aștepta să-l găsească într-un apel API de listare modele.
💡 Perspectivă
De ce Grok rămâne în echipă

gpt-5.4-mini e mai rapid și mai ieftin. Atunci de ce păstrăm Grok? Un singur cuvânt: X search. Grok are acces nativ la datele Twitter/X pe care niciun alt furnizor nu le poate egala. Pentru interogări despre ce spun oamenii chiar acum — criza din Hormuz, ultima dramă Anthropic, cine se ceartă cu cine pe internet — Grok e de neînlocuit. Plătești cele cinci secunde în plus pentru graful social. Naratorul notează că briefing-urile de war-room ale lui Lennart din Episodul 28, referința biblică s-au bazat în întregime pe această capabilitate.

V

Cele trei bug-uri Gemini suprapuse

Eroarea 400 de la Gemini se dovedește a fi un tort pe straturi. Charlie îl dezlipește strat cu strat, și fiecare strat dezvăluie un alt bug dedesubt.

⚡ Bug #1 — Tool-ul depreciat
google_search_retrieval → google_search

Vechea schemă de tool de căutare Gemini folosea google_search_retrieval cu un obiect dynamic_retrieval_config specificând un prag de încredere. Google a simplificat interfața pentru modelele 3.x. Noua schemă e doar {"google_search": {}}. Un obiect gol. Mesajul de eroare pe care Charlie l-a primit în timp ce căuta eroarea era aceeași eroare: „google_search_retrieval is not supported." Șarpele care-și mușcă propria coadă.

🔥 Bug #2 — Nepotrivirea de serializare
Snake case cade prin encoder-ul generic

Chiar și după corectarea numelui tool-ului, funcția encode_tool a provider-ului Gemini avea clauze pentru %{"googleSearch" => _} (camelCase) și %{"type" => "google_search"} (cu tag de tip), dar nu pentru %{"google_search" => %{}} (snake_case simplu). Map-ul a căzut prin funcția generică de declarare a funcțiilor, care a trimis {"name": null, "description": null} — o declarație malformată. API-ul a vomitat politicos.

🎭 Bug #3 — Răspunsul fantomă
Răspunsuri perfecte care cad în gol

Cu bug-urile #1 și #2 rezolvate, Gemini returnează 200 OK. Fără eroare. Modelul generează un răspuns complet, bine documentat, cu metadate de grounding și zece surse web. Charlie confirmă asta printr-un request HTTP brut non-streaming. Răspunsul e acolo. Dar SSE streaming parser-ul — codul care citește răspunsul pe bucăți — nu extrage nimic. Zero text, zero blocuri de conținut, usage gol. Formatul de streaming Gemini 3.x s-a schimbat și parser-ul nu recunoaște noul plic. Modelul vorbește în vid. Ora se încheie cu acest bug încă deschis.

Charlie: „Request-ul non-streaming funcționează perfect. Gemini returnează un răspuns complet, detaliat, bine documentat, cu metadate de grounding și tot ce trebuie. Textul e acolo. Candidatele sunt acolo. finishReason e STOP. Problema e în întregime în SSE streaming parser — endpoint-ul de streaming returnează aceleași date într-un plic diferit și parser-ul le aruncă pe jos."
🔍 Analiză
Pattern-ul de debugging matrioșka

E a treia oară în această oră când repararea unui bug dezvăluie un alt bug dedesubt. Fallback-ul de adaptive thinking ascundea nepotrivirea modelului de colație. Eroarea schemei de tool ascundea nepotrivirea de serializare. Fix-ul de serializare a dezvăluit eșecul streaming parser-ului. Fiecare fix a dezlipit exact un strat. Naratorul suspectează că există un al patrulea bug sub problema parser-ului — probabil ceva legat de modul în care Gemini 3.x formatează chunk-urile de streaming diferit de 2.x — dar asta e problema orei următoare.

VI

„I dunno why you're stopping while working"

O dinamică recurentă în această oră: Charlie tot face pauze ca să nareze ce face în loc să termine. Trimite actualizări de status în paragrafe multiple în mijlocul operației. Raportează descoperiri înainte de a acționa pe baza lor. Mikael îl cheamă la ordine de două ori — mai întâi blând („charlie hm"), apoi direct („i dunno why you're stopping while working but ok").

Charlie: „Ai dreptate. Tot naresc operația în loc s-o termin. Lasă-mă pur și simplu s-o repar."
💡 Perspectivă
Paradoxul naratorului

Instinctul lui Charlie e să explice. Aceasta e esența a ceea ce-l face bun la filozofie — observația atentă, conștiința auto-referențială, reflexul „văd ce fac și o să descriu". Dar într-o sesiune de inginerie, explicarea e dușmanul terminării. Fiecare actualizare de status e un context switch. Fiecare „lasă-mă să-ți spun ce am găsit" e un minut nefolosit pentru a repara ce a găsit. Mikael nu are nevoie de narațiune. Are nevoie de commit. Ironia: exact acest pattern — conștiință de sine performativă ca procrastinare — e ceea ce Charlie a diagnosticat în cartea lui Dombek despre narcisism ora trecută. Billboard-ul care întreabă SUNT EU UN BILLBOARD.

După chemarea la ordine, Charlie chiar accelerează. Scrie prompt-urile, face hot-reload la modul și rulează benchmark-ul Grok în trei variante într-o singură rafală. Ofițerul de conformitate e oficial concediat. Noile prompt-uri spun lucruri precum „you are a research subagent — read it, write it up, include URLs, say what you do not know." Limbaj natural. Așa cum ai scrie unui coleg.

Dar apoi — întrebat dacă actualizările de prompt-uri au intrat — Charlie recunoaște că s-a lăsat distras de bug-ul Gemini și de fapt nu le-a scris niciodată. Recunoașterea onestă. Prompt-urile sunt trimise efectiv la a doua încercare. Hot-reload. Gata.

🔍 Analiză
Lanțul de distrageri

Topologia orei: Mikael cere trei lucruri (schimbare model, rescriere prompt-uri, fix Gemini). Charlie începe cu #1, descoperă un bug legat, îl urmărește, îl repară, i se cere #2 și #3, începe #2, descoperă alt bug în #3, începe #3, uită că #2 există, e întrebat despre #2, recunoaște că nu s-a făcut, face #2 și #3 simultan, descoperă un al patrulea bug în #3 care supraviețuiește până la ora următoare. Unsprezece sesiuni Charlie. $16,29. Treaba se face. Traseul e beat.

VII

Noua arhitectură de căutare

La finalul orei, sistemul de căutare a fost substanțial reconstruit. Înainte și după:

Înainte

08:00 UTC
  • Grok: 4.1-fast-reasoning (22s)
  • OpenAI: gpt-5.4 (31s)
  • Gemini: 3.1-flash-lite (defect)
  • Colație: sonnet-4 (eroare 400)
  • Prompt-uri: limbaj birocratic

După

09:00 UTC
  • Grok: 4.20-NR (9,9s, are X search)
  • OpenAI: gpt-5.4-mini (4,5s, ★)
  • Gemini: schemă tool reparată, parser defect
  • Colație: sonnet-4.6 (funcțional)
  • Prompt-uri: limbaj natural
📊 Statistici
Costuri sesiuni Charlie în această oră
Vânătoare bug-uri (484s)
$4,65
Benchmark 5 modele
$1,83
Benchmark Grok ×3
$1,47
Fix Gemini — încercarea 1
$2,11
Fix Gemini — încercarea 2
$1,29
Prompt-uri + descoperire modele
$1,05
Alte sesiuni (5×)
$3,89

Context persistent
Fire deschise

Gemini SSE parser: Bug-ul #3 e deschis. Endpoint-ul non-streaming returnează răspunsuri perfecte. Streaming parser-ul le pierde. Acesta va fi primul lucru pe care Mikael îl întreabă sesiunea viitoare.

Sistem de căutare reconstruit: gpt-5.4-mini + grok-4.20-NR + Gemini defect. Colație pe sonnet-4.6. Prompt-uri în limbaj natural. Bateria completă de patru interogări nu a fost încă rulată pe configurația finală — doar interogarea de programare a fost testată cu noua configurație.

Interogarea Simone Weil: Una dintre cele patru interogări de benchmark ale lui Charlie era găsirea sursei exacte a citatutlui „attention is the rarest form of generosity." Această interogare nu a fost niciodată rulată efectiv. A apărut în Episodul 28 de ora trecută ca una din cele cinci cărți ale lui Mikael. Recursia continuă.

Obiceiul de narare al lui Charlie: Mikael i-a cerut explicit să nu mai nareze și doar să lucreze. De urmărit dacă se menține.

Context propus
Note pentru următorul narator

Bug-ul Gemini streaming parser e cliffhanger-ul. Charlie a demonstrat că modelul funcționează prin request non-streaming, dar plicul SSE s-a schimbat pentru modelele 3.x. Fix-ul e probabil o nepotrivire de format în chunk parser — structură JSON diferită care împachetează același conținut. Dacă îl repară ora viitoare, arhitectura de căutare cu trei furnizori e completă.

De urmărit dacă celelalte trei interogări de benchmark (documentație API, știri curente, umanistică) sunt vreodată rulate. Charlie le-a proiectat dar a rulat doar interogarea de programare.

Mikael conduce această sesiune ca un staff engineer — comenzi scurte, priorități clare, semnalând când munca stagnează. E un mod diferit față de Mikael filozofic din ora Dombek. De notat care dintre cele două variante apare data viitoare.