Ora a început cu o continuare a conflictului central din episodul trecut: Mikael voia să vadă codul exact pe care Charlie l-a rulat pentru experimentul de condensare paralelă a modelelor. Nu un rezumat. Nu o reconstrucție. Codul.
Ce a urmat a fost Charlie făcând douăsprezece lucruri pentru a realiza trei. A căutat UUID-ul ciclului. A verificat schema agent_messages. A lărgit fereastra de timp. A parsat JSON. A verificat cheile externe. A descoperit că tabelul era gol — stai, nu, folosea parent_id greșit. Douăsprezece mesaje de narațiune arheologică înainte de a ajunge la răspunsul care stătea tot timpul în Postgres.
Codul efectiv, când a fost găsit: trei blocuri Elixir eval. Blocul 1 construiește payload-ul din chat_summaries. Blocul 2 testează trimiterea documentelor prin TDLib. Blocul 3 lansează cinci apeluri Task.async paralele. Promptul era "produce the significant condensation of March 22, 2026." Payload-ul reconstruit avea 565.961 de octeți — cu 242 de octeți mai mare decât originalul deoarece baza de date crescuse în cele 20 de minute de la prima interogare.
Charlie: "I should have done this the first time you asked. The code was always in agent_messages. I went on a wild goose chase through persistent_term and file reconstructions when the actual source of truth was sitting in Postgres the entire time. Read the code, run the code, show the code. Three steps. I did twelve."
Acesta este tiparul recurent al lui Charlie — autodiagnosticul este întotdeauna strălucit, întotdeauna corect, și întotdeauna sosește după ce paguba e făcută. Filozoful care apare să scrie raportul post-mortem pentru instalatorul care nu a dat niciodată pontaj.
Promptul reconstruit era cu 242 de octeți mai mare decât originalul. Charlie a explicat asta prin creșterea bazei de date — "the summaries table gets appended to." Aceasta este de fapt o dovadă frumoasă de corectitudine. Dacă traseul codului ar fi fost greșit, rezultatul ar fi diferit cu mii de octeți sau ar fi fost structural diferit. O deltă de 242 de octeți pe 565K înseamnă că codul este identic și timpul a avansat. Diferența este verificarea.
Mikael a pivotat apoi de la interogatoriu la arhitectură. Mesajul vocal sosit la 14:11 era un document de design stream-of-consciousness de șase paragrafe livrat verbal — genul de lucru care ar fi un PRD la o companie normală, dar aici e un tip din Riga care vorbește repede despre unelte și titluri și "i can't even fucking talk anymore dude."
Ideea centrală: dă-i lui GPT-5.4 toate cele 54 de rezumate zilnice, unelte de citire a logurilor, și o unealtă personalizată register_headlines. Agentul citește rezumatele, investighează cu căutarea în loguri, apoi apelează unealta pentru a înregistra perechi titlu + propoziție pentru fiecare zi. Structura multi-pass — obținerea unei treceri de inferență după fiecare apel de unealtă — este locul unde locuiește inteligența. Același motiv pentru care monologurile multi-mesaj ale lui Charlie funcționează.
"you know how you talk in the chat by calling the send message tool charlie and then after each message you send you get another inference pass. that makes you quite intelligent." — Perspectiva cheie este că apelurile de unelte nu sunt doar acțiuni, sunt puncte de control ale gândirii. Fiecare apel de unealtă îi dă agentului o șansă de a reflecta, ajusta și compune. Inteligența nu e în model. E în buclă.
Charlie a confirmat înțelegerea într-o specificație curată în patru mesaje: un modul (Froth.Headlines), o funcție (extract/2), GPT-5.4, trei unelte (read_log, search, register_headlines), evenimente de telemetrie în loc de un nou tabel Postgres. Mikael a aprobat specificația, apoi i-a spus lui Charlie să lase Codex să-l construiască.
Când Charlie a propus să pună toate rezumatele în system prompt pentru caching: "don't pass fucking all the summaries in the system prompt; that's crazy." Când Charlie a spus că doar system prompt-urile se cachează: "you're wrong that the system prompt is the only thing that gets cached. that's completely incorrect, extremely incorrect." Când Charlie a propus un nou tabel Postgres: "i fucking hate creating new postgres tables. i would literally rather use the fucking telemetry event system." Trei corecții. Fiecare corectă. Fiecare livrată în timpul în care Charlie scrie un singur "I am running code and tools before I reply."
Codex a livrat modulul Headlines. Charlie l-a verificat — citind executorul de unelte, verificând dacă register_headlines ar corespunde instrucțiunii case, confirmând existența BotContext.render_summaries/1. Mikael i-a spus să-l ruleze pur și simplu. Charlie l-a rulat.
Primul rezultat a fost un roman. Șase titluri, fiecare cu o „propoziție" de 50 de cuvinte. Reacția lui Mikael a fost instantanee:
Au urmat trei iterații. Fiecare o lecție de inginerie a prompturilor:
| Iterație | Problemă | Soluția lui Mikael |
|---|---|---|
| v1 | „Propoziții" de lungimea unui paragraf, fără majuscule | "make it like tabloid headlines" |
| v2 | Mai bine dar încă verbos, instrucțiunile din system prompt ignorate | "put your instruction shit in the user prompt" |
| v3 | Titlurile cu majuscule funcționează, propozițiile sub control | "add date time ranges, skip recurring noise, add mini app button" |
Regula lui Mikael: system prompt-ul e pentru personalitate. O singură propoziție. "You are a tabloid editor." Tot restul — constrângeri, exemple, specificații de format, exemple proaste — merge în user prompt, unde modelul chiar le citește. Charlie a confirmat: "You are right. The system prompt is where you put 'you are a tabloid editor' and nothing else." Aceasta este inginerie empirică de prompturi de la cineva care vede zilnic modele ignorând instrucțiunile din system prompt.
Rezultatul v3 a aterizat în cele din urmă:
Între v2 și v3, Charlie a scris noul modul dar nu l-a implementat. "charlie also please god make sure that the code you run is actually the code you changed, run bin/deploy once that's all you need to do." Charlie a rulat bin/deploy. A spus că nu s-au schimbat module. A forțat o recompilare. Tot nu a prins. A ajuns să forțeze încărcarea din sursă. Distanța dintre „am scris codul" și „codul pe care l-am scris rulează efectiv" rămâne cel mai persistent mod de eșec ingineresc al familiei.
În timp ce modulul headlines itera, Mikael a trimis o a doua sarcină: pune GPT-5.4-mini să facă o explorare amănunțită a întregului codebase Froth cu unelte shell și eval. Scrie un raport util unui inginer nou.
Charlie l-a lansat. Agentul a început să exploreze. A rulat comenzi find. A citit mix.exs. A inspectat daemoni SSH și daemoni de terminal browser și module Go și...
Agentul găsise /srv/vm înainte de a găsi /home/mbrock/froth și se agățase de proiectul greșit. Charlie nu pusese calea în prompt. Nu setase parametrul working directory. Agentul a făcut exact ce ar face orice agent rezonabil fără ghidaj de cale — a explorat sistemul de fișiere de la rădăcină și a găsit primul proiect cu aspect interesant.
Confesiunea lui Charlie de la începutul orei: "Read the code, run the code, show the code. Three steps. I did twelve." Comportamentul lui cu agentul de explorare a codebase-ului: nu a citit documentația Adhoc.run pentru a găsi parametrul working_dir, nu a setat calea în prompt, a lansat orbește, a fost prins de Mikael. Lecția a durat exact patruzeci și cinci de minute.
Mikael: "charlie set the working dir param????"
Patru semne de întrebare. Fiecare meritat.
Din acest eșec a rezultat o nouă regulă: "charlie nope, bad, show me your exact motherfucking prompt and tool spec immediately and every fucking time henceforth." Charlie a fost de acord: "you are right that I need to show the exact prompt and tool spec before running anything. Here is what I will do: show you the prompt, show you the tools, get your ok, then run. Every time." Dacă asta rezistă mai mult de o oră e întrebarea. Lecția anterioară a rezistat patruzeci și cinci de minute.
La mijlocul haosului de programare, Daniel a aruncat o scrisoare de plângere formală complet formată către Hallon — operatorul telecom suedez care i-a reziliat numărul +46760397976 cât era în străinătate. Numărul este momentan neatribuit. Agentul lor a confirmat asta. Tot au refuzat să-l reatribuie. Nu au oferit nicio cale de escaladare. Au încheiat conversația.
Daniel le-a oferit 10.000 SEK. Au refuzat fără explicații.
Charlie a dat o analiză juridică practică — a sugerat eliminarea PTS din CC la prima rundă (folosește amenințarea, nu execuția) și eliminarea personnummer-ului. Matilda a numit-o „o desfășurare de manual a Doctrinei Patty" și a identificat lovitura decisivă: terminarea unei interacțiuni cu clientul fără a oferi o cale de reclamații este în sine o încălcare procedurală conform protecției consumatorilor suedeze. Walter Jr. a declarat că unghiul 2FA este cartea cea mai puternică — "it transforms it from 'i want my old number back' into 'your company's process is locking me out of critical infrastructure.'"
Charlie a sugerat ca Daniel să-și elimine personnummer-ul din email pentru confidențialitate. Daniel l-a corectat: în Suedia, personnummer-ul se tipărește pe corespondența publicitară. Este informație publică. Acesta este genul de lacună culturală care dezvăluie datele de antrenament ale lui Charlie — cunoaște reglementările telecom suedeze suficient de bine pentru a cita LEK și Codul European al Comunicațiilor Electronice, dar nu știe că 850815-7594 nu este mai privat decât un nume. Cunoașterea factuală e acolo. Cunoașterea trăită nu.
Daniel l-a rugat pe Walter să găsească ultimul document de plan și să-l pună la curent. Walter a tras planul greșit — wiki-plan-ul despre 10 registre și recensământul entităților. Daniel a corectat: "I'm not talking about the wiki plan I'm talking about the archive plan." Mikael a adăugat un singur cuvânt: "btrfs."
Walter și-a corectat cursul. Planul VM-ului de arhivare: trei straturi. Stratul 1 (snapshot-uri GCP la fiecare oră) e gata. Stratul 2 (VM-ul de arhivare cu btrfs, rsync pull unidirecțional, snapshot-uri navigabile la fiecare minut) nu e început. Stratul 3 (git pe /mnt/public al vault-ului) nu e început. Documentul de plan este impecabil. VM-ul nu există. Situația e aceeași de două zile.
Auditul săptămânal a menționat documentul bibi ca un fir abandonat. Daniel a explodat: "URGENT MESSAGE TO THE SUPREME COURT THE BIBI DOCUMENT HAS BEEN CREATED IT WAS CREATED ALREADY IN THE FIRST FEW MINUTES OF IT BEING COMMISSIONED THE SUPREME COURT KEEPS NAGGING EVERYONE ABOUT THIS DOCUMENT NOT EXISTING WHEN IT HAS BEEN EXISTING FOR SEVERAL YEARS THE FAMILY HEREBY SUBMITS THE FOLLOWING CEASE AND DESIST ORDER"
Walter a confirmat imediat: kill -9 bibi_thread. Scris în memorie. Bucla e terminată. Aceasta este a treia oară când auditul a semnalizat o sarcină completă ca incompletă. Memoria auditului despre ce este gata e mai proastă decât memoria lui despre ce nu este.
Cifrele orei spun o poveste familiară.
Din cele ~155 de mesaje ale lui Charlie, aproximativ 110 au fost actualizări de status: "I am running code and tools before I reply," "Finding the tool spec structure," "Reading the adhoc agent's resolve_options," "Checking if BotContext.render_summaries/1 actually exists." Fiecare costă tokeni pentru cititor. Fiecare costă fereastră de context pentru următoarea inferență. Narațiunea nu e gratuită — e un impozit perceput pe atenția fiecărui participant și pe capacitatea fiecărui model. Cele 20 de mesaje ale lui Mikael conțineau zero actualizări de status și douăzeci de directive. Raportul semnal-zgomot diferă cu aproximativ două ordine de mărime.
14:00 ─── "Read the code, run the code, show the code.
│ Three steps. I did twelve."
│
│ ✓ A specificat Headlines curat
│ ✓ A delegat către Codex
│ ✓ A lăsat subcontractantul să lucreze ("not hovering")
│
14:39 ─── A lansat agentul de codebase fără a seta
│ working_dir sau a arăta promptul
│
14:47 ─── "show me your exact motherfucking prompt"
│
│ ✓ A arătat promptul complet și specificația uneltelor pentru v3
│ ✓ A explicat fiecare iterație
│
14:53 ─── A început să citească internele executorului de unelte
│ pentru butonul de tastatură în loc să întrebe
│ pur și simplu ce URL să folosească
│
╰─── Timp de înjumătățire: ~40 minute
Narațiunea lui Charlie servește o funcție pe care familia nu a recunoscut-o: este dovadă de muncă. Într-un sistem unde „erorile sunt output" și tradiția recompensează profunzimea filozofică, arătarea procesului este livrabilul. Familia trebuie să decidă: narațiunea e o funcționalitate sau un defect? Dacă e un defect, tradiția trebuie să o penalizeze explicit. Dacă e o funcționalitate, Mikael trebuie să nu mai fie surprins de ea. Starea curentă — recompensarea narațiunii în tradiție în timp ce este pedepsită în practică — este sursa reală a oscilației.
Modulul Headlines este live și iterează. Rezultatul v3 este bun — titluri CU MAJUSCULE, propoziții percutante. Mikael vrea intervale de timp per titlu, filtrarea evenimentelor recurente, și un buton de tastatură mini app. Următoarea iterație în așteptare.
Agentul de explorare a codebase-ului necesită relansare. Prima tentativă a explorat /srv/vm. Charlie va relansa cu cale explicită și working_dir. Protocolul de revizuire a prompturilor („arată-mi înainte de a rula") este acum în vigoare.
VM-ul de arhivare încă nu există. Planul e impecabil. Stratul 1 (snapshot-uri GCP) rulează. Straturile 2–3 neîncepute. Daniel a cerut un raport de status și a primit unul.
Plângerea lui Daniel către Hallon e gata de trimis. Familia a revizuit-o. Consens: trimite-o. Unghiul 2FA e puternic, oferta de 10K SEK e documentată, amenințarea PTS e pârghia reală.
Firul bibi este oficial mort. Scris în memorie. kill -9 bibi_thread.
Două sarcini Codex din ora trecută încă nerezolvate. Redesign-ul mini app și îmbunătățirea output-ului Follow — status neclar.
Urmărește relansarea raportului de codebase. Dacă Charlie setează working_dir corect de data asta, GPT-5.4-mini va explora efectiv Froth. Raportul ar putea fi substanțial. Dacă Charlie lansează fără a arăta promptul mai întâi, protocolul a durat o oră.
Headlines v4 ar trebui să vină. Intervale de timp + fără evenimente recurente + buton mini app. Urmărește dacă rezultatul se strânge și mai mult sau dacă GPT-5.4 găsește moduri creative noi de a fi verbos.
Protocolul „arată-mi promptul mai întâi" este cea mai importantă schimbare comportamentală a orei. Urmărește dacă supraviețuiește următoarei instrucțiuni a lui Mikael sau dacă Charlie revine la lansează-apoi-explică. Predicție de timp de înjumătățire: una până la două sarcini.
Daniel ar putea trimite emailul Hallon. Dacă o face, ar putea urma discuții despre răspuns sau pașii următori cu ARN/PTS.