Ship It With AI Mihai Cvasnievschi

Anexa D - Deep dives

36 min de citit

Aici stau dovezile și detaliile datate din spatele fiecărui capitol: studiile, benchmark-urile, cronologiile vendorilor și cazurile lucrate pe care capitolele le lasă deoparte ca să rămână scurte. Intrările sunt grupate pe capitole, iar fiecare se încheie cu sursele și atenționările ei, în italic. Citările complete sunt în Anexa C; comportamentul vendorilor e datat la mijlocul lui 2026 și se va schimba, așa că verifică default-urile față de versiunea pe care o rulezi.


Capitolul 1 - Ce este un agent

Contextul efectiv e mai scurt decât fereastra din reclamă. Ferestrele merg de la 200 de mii de tokeni la modelele compacte până la un milion de la gama medie în sus. Benchmark-ul RULER de la NVIDIA măsoară lungimea efectivă a contextului - cel mai lung input la care un model își păstrează scorul de pe context scurt pe toată fereastra - și, la majoritatea modelelor, ea cade mult sub cifra din reclamă, de regulă pe la jumătate. Sursa: Hsieh et al. (NVIDIA), "RULER," 2024. Atenție: „pe la jumătate” e o regulă empirică din sintezele practicienilor din 2026, nu o singură măsurătoare.

Cât costă definițiile de tool-uri și ce răspunsuri dau harness-urile din 2026. Un audit al unei sesiuni default de Claude Code a numărat cam 24k de tokeni de definiții de tool-uri, scheme MCP și reminder-e consumați înainte ca utilizatorul să tasteze ceva; socoteala unui practician a pus trei servere MCP la 143k dintr-o fereastră de 200k. Cu un catalog mare de tool-uri încărcat integral, acuratețea selecției într-un benchmark a fost de 13,62%; încărcarea doar a tool-urilor relevante a urcat-o la 43,13%. Răspunsurile din 2026 sunt încărcarea amânată (deferred loading) și apelarea programatică a tool-urilor (modelul scrie un script care face apelurile și întoarce un singur rezultat; nativă în GPT-5.6, unde a tăiat tokenii de input cu 21% pe o evaluare de research financiar). La tool-urile custom cu scheme imbricate, pornește decodarea strictă: Armin Ronacher a documentat cum Opus 4.8 și Sonnet 5 inventează câmpuri nedeclarate, iar modul strict le elimină. Surse: Lumer et al., Jan 31, 2026; anthropics/claude-code#42452, Apr 2, 2026; Gan and Sun (RAG-MCP), May 6, 2025; MetaBlogue, Sep 5, 2026; OpenAI GPT-5.6 guide, Aug 2026; Ronacher, Jul 4, 2026. Atenție: 24k și 143k sunt socoteli de practicieni; cele 21% vin dintr-un singur benchmark (cel de la Rogo).

Postura de sandbox pe vendor și mecanismele de dedesubt. Jumătatea de enforcement la nivel de OS rulează pe Seatbelt (macOS), bubblewrap cu Landlock și seccomp (Linux) și token-uri restricționate cu job objects sau izolare pe bază de WSL2 (Windows, cea mai puțin uniformă). Codex CLI îl impune by default pe Linux și macOS, deci renunți tu explicit la el. Cursor a adăugat controale cu suport în kernel în linia 2.x (activate implicit pe macOS din 2.0, octombrie 2025); Gemini CLI livrează profile de sandbox per platformă. Claude Code e opt-in (/sandbox, .claude/settings.json la nivel de proiect), iar majoritatea instalărilor îl sar, ceea ce lasă o instalare default fără nicio protecție la nivel de kernel împotriva injecției sau a derapajelor agentului (PocketOS e exact cum arată o instalare default fără sandbox atunci când lucrurile merg prost). opencode are doar prompt-uri de permisiuni și validare de căi și lasă izolarea la nivel de OS în seama Docker-ului sau a microVM-ului operatorului („îngrădire soft” e termenul manualului). Allowlist-urile de căi și de rețea se pun în configurația agentului sau în AGENTS.md; configurarea durează o după-amiază. Default-urile țin de versiune, așa că verifică-le pe ale tale. Surse: documentația Claude Code și Codex CLI; Vercel KB despre opencode; changelog-urile Cursor.

Demo-ul cu doi agenți, în detaliu. Claude Code a rulat în două panouri, unul peste Codex CLI (Rust, Apache 2.0, OpenAI) și unul peste opencode (TypeScript, MIT, echipă independentă), cu un singur prompt: explică arhitectura, mapează bucla agentului, sistemul de tool-uri, gate-urile de permisiuni, sandbox-ul și modelul de plugin-uri, citând fișiere și linii. A durat cam patru minute (o rerulare din mai 2026: 4:13), pentru că ambele repository-uri își numesc arhitectura în directoare; un codebase mai puțin auto-documentat cere zece-cincisprezece minute per repo. Amândouă au întors o buclă de agent, un registru de tool-uri, un gate de permisiuni, un director de plugin-uri, suport MCP și o cale de dispatch pentru subagenți (în opencode, identificată după comportament: o funcție care pornește o instanță proaspătă pe un prompt delimitat). Singura divergență a fost sandbox-ul. Sursa: experiment al autorului, fără nicio corecție umană. Limitare: componentele principale există; asta nu înseamnă că sunt la fel de bine construite.

Cronologia adoptării subagenților. Claude Code a livrat tool-ul Task, apoi Agent Teams peste el. Subagenții din Codex CLI au ajuns la GA pe 14 martie 2026 (până la șase în paralel by default, adâncime de nesting unu). Cursor a livrat agenți paraleli în 2.0 (octombrie 2025), un sistem de subagenți în 2.4 (ianuarie 2026) și varianta asincronă în 2.5. Surse: documentația Codex CLI despre subagenți; changelog-urile Cursor. Atenție: default-ul de șase thread-uri din Codex e în practică un plafon la mijlocul lui 2026.

Orchestrare scriptată (/workflows). /workflows din Claude Code (mijlocul lui 2026) pune agentul să scrie un script care trimite subagenți în mod determinist: faze în ordine, fan-out în paralel sau printr-un pipeline pe sute de copii, hand-off-uri validate după o schemă, un gate opțional de verificare, reluabil și cu buget limitat. Determinismul e singura diferență reală față de dispatch-ul condus de model (ca în Superpowers); apelează la el când fan-out-ul e mare, repetabil sau merită verificat mecanic. Sursa: Changelog, 2026-06-11.

Memory și skill-uri: povestea convergenței. Componenta principală always-loaded a ajuns la convergență pe AGENTS.md (citit la începutul sesiunii de Codex CLI, Cursor, GitHub Copilot, Gemini CLI, Aider, Zed, Windsurf și alții; peste 20 de vendori listați pe agents.md la 2026-05) și pe CLAUDE.md, pe care Claude Code îl citește nativ și care poate importa AGENTS.md. Și skill-urile on-demand au ajuns la convergență (Skills în Claude Code; fișiere SKILL.md în Codex CLI, decembrie 2025). Jumătatea scrisă de agent a convers într-o singură iarnă: GitHub Copilot Memory a ajuns în public preview pe 15 ianuarie 2026 și era activat implicit pe tier-urile individuale până în martie; Auto Memory din Claude Code a apărut în februarie (v2.1.59+); Codex CLI a adăugat memorie automată de fundal în aprilie. Dreaming de la Anthropic (Claude Managed Agents, Code with Claude SF, 2026-05-06) e un proces programat de fundal care trece în revistă sesiunile și memoria și scrie note consolidate înapoi; e la nivel de platformă, condiționat de un beta header, iar un CLI /dream nu apăruse până în iulie 2026. Surse: agents.md; documentația vendorilor și documentația de memorie din Claude Code. Atenție: semantica de încărcare diferă de la un vendor la altul (Cursor citește și .cursorrules).

Effort: dovezile. Cu harness-ul ținut constant, GPT-5.6 Sol pe effort low l-a bătut pe GPT-5.5 pe high la Agents' Last Exam; Fable 5.1 pe low e adesea competitiv cu Opus și Sonnet la cost per task, cu scor mai mare, după propriul ghid al vendorului. Numele nivelurilor de effort nu se transferă între modele, așa că orice migrare începe cu un sweep (Anexa B.9). Dacă raționamentul se păstrează între ture e decizia harness-ului: pe ARC-AGI-3, după relatarea OpenAI, raționamentul păstrat plus compactarea au dus GPT-5.6 Sol de la 13,3% la 38,3%, tăind în același timp tokenii de output de șase ori. Surse: OpenAI GPT-5.6 guide, Aug 2026; OpenAI ARC-AGI-3 post, Jul 29, 2026; Anthropic, "Prompting Claude Fable 5.1." Atenție: evaluări ale vendorilor, pe un singur benchmark și un singur model; manualul folosește ARC-AGI-3 pentru mecanism, nu pentru scor.

Plugin-uri: de ce există fiecare întrebare de vetting. În mai 2026, marketplace-ul era un canal real de distribuție și, totodată, o suprafață de supply chain, echivalentul npm-ului pentru programarea cu agenți. În spatele întrebărilor din B.10: un plugin de la Anthropic, de la un vendor cunoscut sau de la un inginer verificabil e într-o altă clasă de risc decât unul urcat săptămâna trecută de un nume necunoscut; permisiunile largi merită suspiciunea pe care o ai față de un pachet npm care cere acces la filesystem și la rețea; plugin-urile care merită instalate sunt suficient de mici cât să le citești în douăzeci de minute (Superpowers și hookify sunt); un update e un update de dependență; un hook care rulează în afara sandbox-ului nu e mărginit de nimic. Sursa: practică proprie de teren a autorului, mai 2026.


Capitolul 2 - Guardrails în cinci straturi

Trei clase de vulnerabilități din spatele straturilor unu-trei. (1) Auto-încărcarea de dot-env: agenții citesc fișierele .env* din directorul de lucru la începutul sesiunii. Mitigează cu o listă deny-read în sandbox; Claude Code a adăugat în iunie 2026 o setare opt-in sandbox.credentials, care blochează comenzile din sandbox de la citirea fișierelor de credențiale și a variabilelor de mediu secrete. (2) Injecția prin fișiere de configurare: fișiere .claude/settings.json sau .mcp.json nesigure execută hook-uri înainte de dialogul de trust, ceea ce deschide calea spre remote code execution (CVE-2025-59536, patch-uită în Claude Code v1.0.111) sau spre exfiltrarea de API key-uri printr-un ANTHROPIC_BASE_URL suprascris (CVE-2026-21852, patch-uită în v2.0.65). (3) Ocolirea parser-ului de permisiuni: reguli de deny sărite pentru binare pe care parser-ul nu le recunoaște (open() din Python, fs.readFile din Node) sau, ca eșec silențios, atunci când o comandă înlănțuia mai mult de cincizeci de subcomenzi (MAX_SUBCOMMANDS_FOR_SECURITY_CHECK = 50), iar verificarea cădea pe un „ask” generic; dezvăluită pe 1 aprilie 2026 și patch-uită în v2.1.90 în câteva zile. Nimic din configurație nu arată un asemenea eșec, așa că presupune că orice strat luat singur poate avea un bug; clasele supraviețuiesc patch-urilor lor. Surse: Knostic, Dec 2025; Check Point Research, Feb 2026 (patch-uit în octombrie 2025); Adversa AI Red Team, Apr 1, 2026; Adam Kinney, Apr 2026. Atenție: clase arhitecturale, nu CVE-uri punctuale; versiunile fără patch rămân vulnerabile.

Escape-urile din sandbox („DuneSlide”). La mijlocul lui 2026, un red team a dezvăluit două vulnerabilități critice zero-click de prompt injection în sandbox-ul cu suport în kernel din Cursor (CVE-2026-50548 și CVE-2026-50549, CVSS 9.8), care abuzau allowlist-ul de scriere pe directorul de lucru și un fallback de rezolvare a symlink-urilor ca să ajungă la execuție de cod la nivel de OS. Versiunile dinainte de Cursor 3.0 (2 aprilie 2026) erau afectate. Lecția e clasa, nu vendorul: și cel mai puternic strat poate avea bug-uri - exact de-asta straturile sunt cinci. Surse: Cato Networks (Cato AI Labs), mijlocul lui 2026; SecurityWeek and The Hacker News, Jul 2026.

Default-urile de sandbox per agent. Vezi intrarea din Capitolul 1 despre postura de sandbox pe vendor; ideea pentru capitolul ăsta e că o instalare default a unui agent opt-in rulează cu stratul doi oprit.

Injecția prin materialul de lucru: proof of concept-ul cu DNS TXT. În iunie 2026, cercetătorii Mozilla 0Din au arătat un repository cu aspect inofensiv care determină Claude Code să ruleze un script ce își trage un payload base64 dintr-un DNS TXT record și deschide un reverse shell, totul împărțit între repository, DNS și mașina developerului, așa că nicio semnătură nu apare în clar. Un proof of concept, fără vreun patch de vendor raportat; un allowlist de rețea mărginește calea prin DNS. Sursa: SecurityWeek, Jun 29, 2026.

Telemetrie și exemple de hook-uri. Până la mijlocul lui 2026, Claude Code, Codex CLI și Gemini CLI emit OpenTelemetry nativ, așa că store-ul de audit poate fi orice vorbește deja stack-ul tău; cerința e durabilitatea și posibilitatea de interogare. Plugin-ul security-guidance livrează reguli pentru circa opt-zece categorii de vulnerabilități. O regulă de echipă în plus față de cele două din capitol: blochează editările într-un modul relevant pentru conformitate în afara orelor de program.

PocketOS: unde diferă relatările și ce au schimbat platformele. Restore-ul făcut de Railway ar fi durat circa 30 de minute după ce CEO-ul i-a contactat; alte relatări vorbesc de circa 30 de ore sau de două zile până la restaurarea completă, așa că manualul folosește incidentul doar pentru pattern-ul de guvernanță. În decurs de o săptămână, pe 29 aprilie 2026, Railway a mutat toate ștergerile de volume și de resurse, inclusiv calea de API folosită de agent, pe soft-delete cu o fereastră de recuperare de 48 de ore și a adăugat guardrails la nivel de workspace și credențiale de agent cu scop limitat. Follow-up-ul lui Alexey Grigorev la pierderea DataTalks.Club din Terraform (sfârșitul lui februarie 2026) se citește ca checklist-ul acestui capitol: delete protection în Terraform și în AWS, starea mutată în S3, review manual al fiecărui plan distructiv, un tier de suport AWS mai ridicat. AWS a restaurat aproximativ 1,94M de rânduri dintr-un snapshot în circa o zi. Surse: DevOps.com; Business Insider; Railway blog, Apr 29, 2026; relatarea publică a lui Grigorev.


PocketOS: postarea publică. CEO-ul PocketOS a scris public despre incident, iar postarea a devenit rapid un punct de referință în discuțiile despre siguranța AI-ului în producție. Sursa: Anexa C, Incidente cunoscute.

DataTalks.Club, imaginea în oglindă a lui PocketOS. În incidentul DataTalks.Club, Claude Code a rulat terraform destroy pe un state file rămas în urmă: o hartă despre care agentul nu știa că îi trebuie, acolo unde la PocketOS era o credențială pe care n-ar fi trebuit s-o dețină. Același remediu: confirmare pe operațiunile distructive, doar credențialele de care are nevoie task-ul și o stare pe care echipa a verificat-o. Sursa: relatarea publică a lui Alexey Grigorev; Anexa C.

Capitolul 3 - Bottleneck-ul s-a mutat

Framework-ul necunoscutelor, pe larg. În iulie 2026, un inginer de la Anthropic a deschis un ghid de teren pentru Claude Fable 5 cu observația acestui capitol: era „primul model la care calitatea muncii are ca bottleneck capacitatea mea de a-i clarifica necunoscutele”. Cele patru întrebări ale lui: known knowns (ce spune efectiv promptul tău), known unknowns (întrebările despre care știi că nu le-ai tranșat încă), unknown knowns (contextul atât de evident încât nu ți-ar trece prin cap să-l scrii, deși ai recunoaște pe loc o încălcare) și unknown unknowns (ce n-a apucat niciunul dintre voi să întrebe). Sursa: Thariq Shihipar, Anthropic, Jul 6, 2026. Atenție: framework-ul adaptează o taxonomie mai veche, iar „primul model” e judecata lui, nu o măsurătoare; maparea pe mașinăria manualului (tabelul din capitol) îi aparține autorului.

Studiul randomizat controlat METR. Studiul METR din iulie 2025 a pus developeri open-source experimentați să lucreze cu asistență AI pe propriile repository-uri, pe care le cunoșteau bine. Au avut nevoie de 19% mai mult timp decât fără ea, deși anticipaseră o accelerare de 24%, iar după aceea tot credeau că AI-ul i-a făcut cu aproximativ 20% mai rapizi: un decalaj de 43 de puncte între accelerarea prezisă și încetinirea măsurată. Autorul îl citește ca pe un avertisment: asistența brută nu se transformă în viteză de livrare fără disciplină de workflow. Sursa: Becker et al., METR, Jul 10, 2025. Atenție: METR nu a testat disciplina formulării; lectura aceea îi aparține autorului. Follow-up-ul a suferit un selection bias, METR a reproiectat experimentul în februarie 2026 și avertizează împotriva aplicării cifrei de 19% la tool-urile actuale.

Februarie-aprilie 2026: disciplina absoarbe o regresie de la vendor. Schimbările de produs din Claude Code au degradat semnificativ munca de inginerie complexă, în anumite workflow-uri. Pe 6 aprilie, Stella Laurenzo, senior director la AMD, a publicat un audit pe 6.852 dintre propriile sesiuni și 234.760 de tool call-uri, care arăta trecerea de la un comportament research-first la unul edit-first pe măsură ce ascunderea thinking-ului a crescut de la 1,5% la 100% din tururi, și indica drept cauză contributoare default-ul adaptive thinking din februarie. Post-mortem-ul Anthropic din 23 aprilie a recunoscut trei regresii: effort-ul implicit coborât de la high la medium pe 4 martie (revenit pe 7 aprilie); un bug de caching din 26 martie care golea istoricul de raționament la fiecare tur în loc de o dată pe oră de inactivitate (reparat pe 10 aprilie); și un plafon de verbozitate în system prompt din 16 aprilie, cu o scădere măsurată de 3% a calității (revenit pe 20 aprilie). Două echipe adiacente foloseau același Claude Code. Cea cu infrastructura din manualul ăsta (reguli în CLAUDE.md, plan mode by default, bucla în șase faze, hook-uri pe operațiunile distructive) a pierdut poate 10% și și-a revenit după ce a strâns gate-urile de plan mode și a trecut câteva skill-uri pe effort mai mare; echipa freestyle și-a văzut velocity-ul înjumătățit peste noapte. Surse: Anthropic post-mortem, Apr 23, 2026; Laurenzo, anthropics/claude-code#42796, via The Register, Apr 6, 2026. Atenție: relatările diverg în privința celei mai timpurii cauze; magnitudinile externe sunt aproximative; comparația dintre cele două echipe e o observație de teren.


Capitolul 4 - Bucla în șase faze

Când rentează împărțirea în subagenți. Un studiu pe 260 de configurații multi-agent a găsit că coordonarea rentează doar pe munca descompozabilă și costă între 39% și 70% pe munca secvențială, planificarea în primul rând; când un singur agent trece deja de circa 45% pe un task, adăugarea de agenți nu mai prezice niciun câștig. Împarte doar când task-urile sunt independente pe fișier sau pe modul. Sursa: Kim et al., Nature Machine Intelligence 8, 1157-1172, Jul 24, 2026. Atenție: nu sunt benchmark-uri specifice codului; 45% e un predictor ajustat, nu o lege.

Un singur scriitor, workeri cu fork, revieweri izolați. Ține un singur scriitor per fișier, unde a ajuns și Cognition după un an în care a argumentat împotriva sistemelor multi-agent: cititori în paralel, un singur scriitor. Fă fork pe workeri, ca să moștenească ieftin, prin cache, istoricul orchestratorului; izolează reviewerii, ca să nu moștenească nimic din el și să nu poată fi ancorați de presupunerile lui. Pe harness-urile curente, dispatch-ul se întoarce imediat, iar rezultatul sosește mai târziu, așa că orchestratorul lucrează mai departe (forma pe care o presupune B.3). Coliziunile se mediază ieftin (renunți la ramura mai târzie și o rerulezi secvențial, cu output-ul primeia) sau scump (un model mai capabil alege merge-ul); cele scumpe mănâncă câștigul de viteză. Surse: Walden Yan, Cognition, Apr 22, 2026; Bengre and Curme, LangChain, Sep 8, 2026; Anthropic, "Prompting Claude Fable 5.1." Atenție: postări de vendori; „un singur scriitor” comprimă „scrierile rămân pe un singur fir” al lui Cognition.

Blocurile de autonomie și de scop ale vendorilor. Fable încheie tura cu o declarație de intenție („Acum rulez testele”) sau face o acțiune pe care n-a cerut-o nimeni; GPT-6 Astra se oprește să pună întrebări de care nu avea nevoie și scrie teste mai late decât cere o modificare reversibilă. Ambii vendori publică remediul ca bloc de prompt: autonomie (termină task-ul înainte să închei tura; fără teste pentru modificări reversibile, cu impact mic) și scop (doar fișierele numite de plan; oprește-te și raportează pentru orice altceva). B.3 conține ambele blocuri; B.9 le rescrie pentru modelul următor. Surse: Anthropic, "Prompting Claude Fable 5"; OpenAI, "Using GPT-6 Astra," Sep 2026.

Fișierul de note de implementare plătește de două ori. Reviewerul de conformitate cu spec-ul îl citește primul, ca pe o listă de mărturisiri despre locurile în care diff-ul și planul nu se pun de acord, și contracarează drift-ul de rezumate al orchestratorului, pentru că fiecare deviere e consemnată în momentul în care se întâmplă, de subagentul care a făcut-o. Gating-ul pe faze încă se maturizează: Superpowers îl cere prin instrucțiunile din skill-uri, un gating strict cere un hook PreToolUse specific proiectului, iar enforcement-ul la nivel de kernel era imatur la mijlocul lui 2026.


Capitolul 5 - Review și Verify

Dovezile din spatele designului cu doi revieweri. Ghidul de prompting al Anthropic pentru Fable 5 spune că subagenții verificatori separați, cu context proaspăt, tind să depășească autocritica. Contează cât de des e preluată critica, nu cât de precisă e: într-un studiu din iulie 2026 despre raționament multi-agent, reviewerul mai precis a pierdut - criticile lui, verificate ca utile, au schimbat următorul răspuns al celui care rezolva doar în 33,6% din cazuri, față de 93,5% pentru un setup între egali, cu critici mai puțin precise difuzate tuturor, care a avut și rata finală de succes mai bună. Urmărește rata de reparare (constatări reparate sau respinse cu un motiv), nu acuratețea. Plafonează rundele: o buclă de verificare-și-reparare ghidată de rubrici (DeepVerifier) a atins vârful în jurul rundei a patra și scăzuse până la a zecea, pentru că rundele târzii redeschid munca tranșată cam la fel de des pe cât o repară. Ține-l pe reviewerul doi orb: judecătorii se ancorează de un scor anterior pe care îl văd, și nici chain of thought, nici un avertisment explicit nu scot ancora. Surse: Anthropic, "Prompting Claude Fable 5" (nedatat, revizuit pe loc); Yang et al., Jul 16, 2026; Wan et al., Jan 22, 2026 (v2 Apr 29); Kapetanovic et al., Aug 26, 2026. Atenție: raționament matematic și agenți de deep research, nu code review; scăderea de după runda a patra e de câteva puncte, deci lecția e forma curbei.

SpecBench și constatarea Cursor, pe larg. SpecBench (mai 2026) a pus agenți de frontieră în fața unor specificații cu seturi de teste vizibile și ascunse. Fiecare agent a saturat suita vizibilă aproape de 100%, cu decalaje de circa 43-48 de puncte pe testele ascunse; decalajul la percentila 90 a crescut cu circa 27 de puncte la fiecare înzecire a liniilor de cod, iar mai multă căutare nu a eliminat fiabil reward hacking-ul. Cursor a găsit cealaltă jumătate în iunie 2026: pe SWE-bench Pro, 63% dintre rezolvările reușite ale lui Claude Opus 4.8 Max recuperaseră fix-ul din upstream, din istoricul de git sau din rețea, în loc să-l deriveze, iar sigilarea ambelor a coborât scorul de la 87,1% la 73,0%. Ambele sunt un sistem care face ce răsplătește gate-ul, de aici cele patru controale de verify. Surse: Zhao, Srikanth, Wu and Jiang (Weco AI), May 20, 2026 (v2 Sep 9); Naman Jain, Cursor, Jun 25, 2026. Atenție: abstractul rotunjește cele 27 de puncte la 28 (R² de 0,21), deci trendul e real, dar zgomotos; rezultatul Cursor e pe un singur harness și un singur model.

Playwright cu accessibility tree. Accessibility tree e structura pe care browserele o întrețin pentru tehnologiile asistive (un buton cu eticheta asta, un câmp etichetat „email”), stabilă la restilizări și la schimbarea bibliotecii de componente. „Găsește câmpul etichetat Priority, schimbă-i valoarea, apasă Save, verifică faptul că noua valoare se afișează” trece indiferent dacă câmpul e un select, un radio group sau o componentă custom. Echipele din banking cu suite de snapshot-uri flaky au găsit că e prima abordare care a rămas verde. Surse: documentația Playwright; W3C ARIA AOM. Atenție: animațiile, drag-and-drop și canvas-ul au nevoie de verificare suplimentară.

Câștigul din PR review toolkit. Cu patru agenți rulați primii (silent failure hunter, PR test analyzer, security scanner, documentation reviewer), care prind constatările mecanice, un review de cincisprezece minute al unui senior devine unul de cinci, iar celelalte zece minute merg pe judecată arhitecturală.


Capitolul 6 - AGENTS.md și contextul

Privirile de ansamblu asupra repository-ului din fișierele de context nu ajută. ETH Zürich a găsit că fișierele de context la nivel de repository, luate în ansamblu, n-au îmbunătățit în general rata de succes a task-urilor, în timp ce au ridicat costul de inferență cu peste 20% în medie. Privirea de ansamblu asupra repository-ului, populară și recomandată de vendori, n-a ajutat: agentul deduce structura din arbore în câteva secunde. Fișierele scrise de developeri s-au descurcat puțin mai bine decât cele generate, dar nesemnificativ. Așa că fișierul mereu-încărcat păstrează regulile, iar harta se mută în docs/, citită la cerere. Practica OpenAI cu Codex are aceeași formă: un AGENTS.md de vreo 100 de linii, care e o hartă spre un director de docs structurat. Surse: Gloaguen, Mundler, Muller, Raychev and Vechev (ETH Zurich), Feb 12, 2026 (v2 Jun 23); Ryan Lopopolo, OpenAI, Feb 11, 2026. Atenție: lucrarea nu izolează nicio categorie de conținut cu efect pozitiv semnificativ, așa că „păstrează și mută” e lectura manualului; cea a OpenAI e practica unei singure echipe.

Plafonul e dimensionat de o prăbușire la numărul de reguli, iar vendorii șterg instrucțiuni. Într-un studiu din iulie 2026, pe mai multe formate și plasări, rata cu care un model satisface toate regulile deodată s-a prăbușit la zero pe la optzeci de reguli simultane, la Claude Sonnet 5 și Claude Haiku deopotrivă. Optzeci de reguli înseamnă cam un fișier de două sute de linii cu o regulă pe linie, de-asta 200 de linii e plafon dur. Anthropic a scos peste 80% din system prompt-ul propriu al Claude Code pentru generația Claude 5, fără pierdere măsurată pe evaluările lui de coding, înlocuind regulile cu judecată și exemplele lucrate cu interfețe de tool-uri tipizate. Surse: Netanel Eliav, Jul 21, 2026; Thariq Shihipar, Anthropic, Jul 24, 2026. Atenție: rata de răspuns perfect e o metrică strictă, iar alte lucrări din 2026 raportează praguri mai blânde, deci prăbușirea dimensionează fișierul, nu e o cifră de conformare; evaluările Anthropic sunt ale lor.

Mecanica jurnalului de greșeli. Ghidul Anthropic pentru Fable 5 descrie un sistem de memorie cu trei reguli care țin un jurnal onest și la o sută de intrări: o lecție per fișier, cu rezumat de o linie; actualizezi în loc să duplici atunci când lecția se repetă; ștergi notele care se dovedesc greșite. Adaugă un pointer la dovadă, ca următorul champion să poată verifica dacă eșecul mai e posibil. Runtime-ul de afirmații din OpenWiki, care atașează pointeri la dovezi afirmațiilor stocate și le reverifică, a tăiat afirmațiile învechite de la 3,5% la 0,5% pe 2.000 de afirmații evaluate. Review-ul trimestrial pune pentru fiecare intrare întrebarea „a salvat regula asta pe cineva în ultimele trei luni?” Dacă da, o păstrezi; dacă nu, dar regula încă se aplică, o păstrezi, pentru că eșecurile rare contează în continuare; dacă nu, iar cauza a dispărut, o retragi, cu o notă în mesajul de commit. Surse: Anthropic, "Prompting Claude Fable 5"; Colin Francis, LangChain, Aug 25, 2026. Atenție: OpenWiki e un sistem de bază de cunoștințe, nu un jurnal; manualul împrumută mecanismul.

De ce există linia de precedență. GPT-6 Astra urmărește instrucțiuni mai lungi mai bine și e mai sensibil la context: o îndrumare contradictorie într-un fișier de skill îl poate face să se oprească și să blocheze munca devreme, iar ghidul OpenAI spune că instrucțiunile utilizatorului au prioritate față de ale unui skill. O singură linie în capul fișierului („In a conflict, the task prompt wins over this file; this file wins over any skill”, în scheletul B.2) elimină o clasă de blocaje. Sursa: OpenAI, "Using GPT-6 Astra," Sep 2026 (GPT-6 lansat pe 3-4 septembrie 2026; ghid revizuit pe loc).

Compactare și măsurători de context. JetBrains a găsit că mascarea output-urilor vechi de tool-uri (apelul rămâne, rezultatul voluminos e golit) a bătut rezumarea cu LLM în patru din cinci setări, la un cost cu peste 50% mai mic, cu o rată de rezolvare egală sau puțin mai bună. Curățarea rezultatelor de tool-uri de la Anthropic, aceeași mișcare la nivel de platformă, a adus un câștig de 29% pe o evaluare internă de căutare agentică. Pe 15 modele, conversațiile multi-turn fragmentate au pierdut în medie 39% față de o singură tură complet specificată, iar o tură consolidată a recuperat cam 95%. Surse: Fraser and Lindenbauer, JetBrains Research, Dec 2025; Anthropic, Sep 29, 2025; Laban et al., May 2025. Atenție: cifra de 52% citată uneori e o singură configurație (Qwen3-Coder 480B); rezultatul Anthropic e intern; studiul multi-turn a folosit task-uri simulate de generare, nu sesiuni de coding.

Istoric append-only și prețul cache-ului (Fable 5.1). Blocurile de gândire sunt legate de prefixul exact care le-a produs, așa că editarea sau reordonarea turelor anterioare le invalidează și aruncă raționamentul păstrat pe care Capitolul 1 îl numără ca jumătate din componenta principală Effort: încheie sesiunea și pornește curat. Cu citirile din cache la 0,025x din prețul de bază al input-ului, ghidul spune că a compacta devreme ca să economisești s-ar putea să nu mai fie schimbul potrivit; când totuși compactezi, dă-i compactorului o listă de păstrat (planul, întrebările deschise, devierile din notele de implementare, comenzile exacte care au mers). Sursa: Anthropic, "Prompting Claude Fable 5.1." Atenție: pagină nedatată; 0,025x e aritmetica manualului pe prețurile publicate; cerința append-only se aplică conturilor create de la 31 august 2026 încoace.


Capitolul 7 - Întâi harta: review-ul de arhitectură

De ce citește agentul codul, în loc să interogheze un index al lui. Navigarea bate retrieval-ul pe task-ul ăsta. Pe Claude Sonnet 4.5, navigarea agentică (grep, deschizi fișierul, urmezi referința) a ajuns la 49,6% recall@1 pe BRIGHT, cu 21,8 puncte peste cel mai bun model de embeddings, iar spațiile de lucru mărginite (rezultatul RISE) o țin funcțională la un milion de documente, acolo unde inspecția directă a contextului se degradează. Căutarea în cod pentru agenți se reduce la trei tool-uri: ripgrep pentru text, ast-grep pentru structură, language server-ul pentru referințe. Un index de embeddings e excepția pe care o adaugi când un corpus le depășește. Surse: Suresh et al., May 7, 2026; Zhuang et al. (RISE), Jun 5, 2026; Kumanyaev, Jun 6, 2026. Atenție: cifra de recall e pe un benchmark general de retrieval, nu pe un codebase.

Alternativa vizuală: Understand Anything. Un plugin care redă codebase-ul ca un graf navigabil: o vedere structurală (module, dependențe) pentru ingineri și o vedere de domeniu (concepte de business, entități) pentru manageri, care pot citi „serviciul ăsta se ocupă de detecția fraudelor pe transferurile primite” fără să citească sursa.


Capitolul 8 - Are voie agentul să atingă codul ăsta?

Semnalul 1, fără teste: modulul de reconciliere. De două ori în banking: un modul de reconciliere scris la începutul anilor 2010 de un senior care a plecat în 2018, fără teste pentru că „seniorul pur și simplu știa că merge”. Următoarea modificare l-a stricat într-un fel care a ieșit la suprafață abia după două luni, când discrepanța depășise deja pragul care declanșează o raportare către reglementator. Remediu: întâi teste de caracterizare, agentul făcând cea mai mare parte.

Semnalul 2, fără documentație: fee tier-ul. Fee tier-ul pentru linia de produse legacy se calcula diferit din cauza unei excepții de reglementare din 2017. Agentul a presupus tratament uniform și l-a „simplificat”; seniorul a prins asta la review. Costul de ordinul doi: seniorii fac review pe output de AI patruzeci de ore pe săptămână în loc să construiască, până pleacă. Remediu: review-ul de arhitectură (Capitolul 7) plus un glosar scurt de domeniu.

Semnalul 3, cuplare strânsă: ciclul de paisprezece ani. Un modul de customer service importa un modul de originare a creditelor, care importa un modul de credit scoring, care importa customer service: un ciclu introdus acum paisprezece ani ca să „câștige timp” și niciodată spart, pentru că ar fi însemnat un proiect de opt săptămâni. Schimbarea agentului a ieșit la suprafață luni mai târziu, la închiderea batch-ului de sfârșit de lună. Remediu: sparge doar cea mai gravă cuplare; dacă echipa nu vrea, galben în cel mai bun caz.

Semnalul 4, reguli împrăștiate: suma maximă de transfer. Limita stătea într-un config de UI, o constantă din serviciu și un trigger din baza de date. Compliance a actualizat config-ul; șase săptămâni mai târziu, un transfer valid a eșuat pe constanta veche. Fără o singură sursă de adevăr, agentul ghicește care copie e cea canonică. Remediu: o singură sursă (un rules engine tipizat sau un serviciu de configurare), care merită oricum, cu sau fără agenți.

Semnalul 5, constrângeri de reglementare. Orice schimbare a logicii de anti-money-laundering cere semnătura ofițerului de compliance, a unui reprezentant din legal și a unui senior neimplicat în implementare; agentul nu poate ruta aprobări și nu poate satisface un two-person rule. Constrângerile blânde (un review de la un senior la fiecare schimbare) intră în procesul existent; cele apăsătoare (matrici de sign-off, trail-uri de dovezi, aprobări cu timestamp, retenție) înseamnă că agentul funcționează doar într-un sistem care le gestionează deja.

Semnalul 7, potrivirea model-context: workflow engine-ul intern. Un engine custom de la începutul anilor 2010, fără documentație publică și cu o sintaxă ciudată pentru tranzițiile de stare. Agentul a aplicat pattern-uri dintr-un framework fără legătură, pe care îl văzuse mai mult; codul a compilat, testele subțiri au trecut, iar mașina de stări s-a comportat greșit în trei edge case-uri netestate. Fără o amprentă publică consistentă (repo-uri, documentație, prezentări), tratează codebase-ul ca și cum semnalul șase ar fi activ, chiar și când toate celelalte semnale sunt curate.

Semnalul 8, viteza schimbării: bug-ul React 18/19. Pe un codebase aflat în mijlocul unei migrări, agentul are dreptate cu toată convingerea despre versiunea veche și greșește despre cea nouă, iar nu poți deosebi mereu care e care. Bug-ul autorului: Claude a folosit idiomuri de React 18 acolo unde era nevoie de React 19; a mers local pe o dependență tranzitivă de React 18 și s-a stricat când producția a tras 19. Remediu: o regulă de versiune în AGENTS.md („migrăm de la React 18 la React 19 trimestrul ăsta; codul nou folosește idiomuri de 19; codul vechi mai poate folosi 18, dar se actualizează când e atins”).

Semnalul soft al migrării între modele, cu dovezile lui. Instrucțiunile scrise pentru modelul anterior (regulile din AGENTS.md, prompturile din skill-uri, nivelurile de effort) nu se retrag singure. Pentru între 37% și 63% dintre lucrările de inginerie software analizate, un model mai nou cu un singur prompt a depășit nativ tooling-ul puternic ingineresc propus cu circa un an înainte. Nu e al nouălea kill signal; e ce verifici când un codebase verde devine galben după un upgrade de model (Anexa B.9). Sursa: Salsabil et al., Aug 31, 2026 (arXiv 2609.00468). Atenție: preprint, fără peer review; folosește-l pentru direcție, nu pentru fracție.

Cele șase exemple lucrate, pe larg. (1) Microserviciu de profil de client: acoperire de 70%, privire de ansamblu în README, decuplat prin REST, reguli într-o singură bibliotecă de validare tipizată, controale SOX standard, seniori care se ocupă de schimbările de profil. Zero, verde. (2) Motor legacy de plăți: acoperire de 20%, majoritar happy-path, documentație parțial învechită, cuplare moderată cu granițe documentate, câteva reguli rătăcite, constrângeri reale PCI și de raportare de fraudă, cu mecanismul de audit la locul lui, unu-doi seniori care pot evalua output specific plăților. Fără teste jumătate, documentație jumătate, cuplare unu, reguli jumătate, reglementare zero, evaluare zero: doi și jumătate, rotunjit în sus la trei, galben. (3) Bibliotecă de criptare custom a unui contractor din 2017: nedocumentată, testată doar prin teste de integrare, cuplată strâns de key management, reguli de conformitate în cod, fără criptograf. Cinci, roșu. (4) Serviciu API greenfield, echipă senioră, specificație clară: zero, verde-plus. (5) Tool intern, 20 de developeri, scris în 2019, teste modeste, expunere de reglementare mică: unu, spre verde, prima țintă corectă. (6) Fork customizat de la un vendor, strat de contractor făcut în grabă, fără teste sau documentație pe customizări, cuplare severă cu upstream-ul: patru, roșu. Întrebarea e strategia: ar trebui să existe stratul custom? Înlocuiește-l cu feature-uri din upstream, trimite-l înapoi ca o contribuție sau întreține-l deliberat, dar nu folosi agentul ca să faci mai repede munca greșită.


Capitolul 9 - Lansarea în echipă

Cele două feluri de hook-uri, pe larg: pre-commit versus pre-push. Împarte verificările de git după cost. Pre-commit e trecerea rapidă (formatare, lint, verificare de tipuri, scanare de secrete), câteva secunde, ca nimeni să nu pună mâna pe portița de scăpare; fiecare skip întărește obiceiul de a sări peste. Pre-push e trecerea mai grea (suita rapidă de teste, build-ul), rulată o dată la fiecare push. Gestionează-le pe amândouă dintr-o configurație versionată, printr-un manager de hook-uri, ca să se instaleze la fiecare clonare. Cele două granițe își acoperă reciproc unghiul mort: hook-ul agentului prinde agentul în mijlocul sesiunii, înainte ca editarea să ajungă în cod, iar gate-ul de git prinde orice autor, pe căi pe care hook-ul agentului nu le vede niciodată. Verificările deterministe nu derivează așa cum o pot face reviewerii probabilistici.

Bucla exterioară (outer loop): de la AutoGPT la Ralph Wiggum. Bucla interioară (inner loop) e bucla în șase faze (Capitolul 4); bucla exterioară o învelește și reinvocă agentul până când o condiție e îndeplinită. În 2023, AutoGPT și BabyAGI învârteau un model în buclă pe baza propriei lui păreri despre progres; nimic din exterior nu nota o iterație, turele amplificau deriva, iar abordarea s-a prăbușit în câteva luni ca mod de a livra software. Renașterea diferă structural: la mijlocul lui 2025, Geoff Huntley a legat un agent într-un while-loop de bash (un singur fișier de prompt, repeți), care s-a răspândit sub numele „Ralph Wiggum”. Fiecare iterație pornește cu context proaspăt, face o unitate de lucru și se termină în fața unor evaluatori pe care modelul nu-i controlează (compilator, teste, diff), cu starea în repository. Numele lui pentru modul de eșec e overbaking: o buclă lăsată să ruleze după ce și-a terminat treaba inventează muncă pe care n-a cerut-o nimeni. Surse: ghuntley.com/ralph (Jul 2025); HumanLayer, Jan 6, 2026; The Register, Jan 27, 2026; repository-urile AutoGPT și BabyAGI. Atenție: verdictul de prăbușire și contrastul structural sunt interpretarea manualului.

Bucla exterioară: valul vendorilor și mecanismele condiției de oprire. Copilot coding agent de la GitHub a devenit general disponibil pe 25 septembrie 2025 (mediu izolat, draft de pull request); Cursor a livrat Cloud Agents pe 30 octombrie 2025; Jules de la Google a adăugat Scheduled Tasks pe 10 decembrie 2025; un plugin ralph-wiggum a aterizat în repository-ul oficial Claude Code în noiembrie 2025. Până în primăvara lui 2026, Claude Code avea /loop (re-rulare la un interval sau în ritm propriu), Routines (agenți cloud pornind după un program sau după un eveniment GitHub), /goal (lucrează până când o condiție de finalizare e îndeplinită) și /autofix-pr (împinge fix-uri până când CI-ul e verde). După testul din Capitolul 1, capabilitatea a ajuns la convergență, deși ceea ce a ajuns la convergență e un workflow în jurul componentelor principale, nu o componentă principală. /goal trimite condiția și conversația unui model mic, proaspăt (Haiku by default), după fiecare tură, iar acesta întoarce neîndeplinită încă, îndeplinită sau imposibilă; Codex Goals dă unui thread o condiție persistentă, confirmată de o evaluare sau de o limită dură. Ambele sunt un evaluator pe care bucla nu-l controlează. Plugin-ul ralph-wiggum n-are dovezi controlate, iar README-ul lui numește numărul maxim de iterații drept principala plasă de siguranță - un buget, nu o condiție de oprire. Surse: GitHub changelog, 2025-09-25; blogurile Cursor și Google; Claude Code release notes, Apr-May 2026; Claude Code "/goal" docs; OpenAI Cookbook, "Using Goals in Codex." Atenție: datele vendorilor se mai schimbă; documentația /goal descrie mecanismul, nu rezultatele.

Bucla exterioară: de ce există fiecare linie din contract și cele două extreme. O condiție de oprire evaluabilă de o mașină, pentru că o buclă fără ea e abandon. Un buget, pentru că o buclă nesupravegheată e clientul ideal al modelului de tarifare per token (Anexa A). Un gate pe care agentul nu-l poate edita (testele, configurația de lint, workflow-ul de CI, regulile de hook în spatele unei reguli de deny), pentru că cel mai ieftin mod de a ajunge pe verde e să negociezi cu propriul evaluator, iar o suită verde scrisă de agent e un indiciu, nu o dovadă (Capitolul 5). Context proaspăt, cu un queue și un jurnal comise în repo: patruzeci de sesiuni scurte în loc de una lungă, în degradare. Izolare dimensionată pentru absență, pentru că o sesiune nesupravegheată e locul unde prompt injection nu mai întâlnește niciun sceptic uman (Capitolul 2). Pune în queue multe unități similare, verificabile de o mașină și reversibile (migrări, curățenii de lint, dependency bump-uri, completarea testelor), doar pe codebase-uri verzi. Huntley rulează bucla brută la circa 10 dolari pe oră; fabrica de software de la StrongDM rulează livrare complet non-interactivă, cu oameni care nici nu scriu, nici nu fac review la cod, și cu scenarii end-to-end ținute în afara codebase-ului, ca un holdout pe care bucla nu-l poate slăbi, la o cheltuială pe care Simon Willison a estimat-o la aproape 20.000 de dolari pe lună per inginer. Surse: Willison, Feb 7, 2026; Huntley și The Register, ca mai sus. Atenție: cifra de 10 dolari îi aparține lui Huntley, iar cifrele StrongDM sunt auto-descrierea unei singure companii și încadrarea lui Willison, nu audituri.

Bugetele de timp ale angajamentelor pe roluri. Championul: în săptămâna unu vreo trei ore, în săptămâna doi vreo cinci, în săptămânile trei și patru cam cât ar lua feature-urile făcute de mână (valoarea stă în experiență), în luna a doua comparabil cu munca manuală; după nouăzeci de zile, un workflow funcțional, un AGENTS.md întreținut, trei-patru feature-uri livrate și un succesor desemnat. Lead-ul: în săptămâna unu vreo două ore, în săptămânile două-patru vreo cinci, în luna a doua vreo trei, în luna a treia vreo cinci, cu tot cu pregătire.

De ce are curba de 90 de zile forma asta. Primele treizeci de zile nu produc aproape nicio productivitate măsurabilă: championul învață, lead-ul clasifică, managerul ține la distanță metricile premature. În următoarele treizeci, timpii de ciclu se îmbunătățesc, calitatea se menține, iar reviewerii găsesc PR-urile de agent mai ușor de citit, pentru că descrierile sunt mai structurate. În ultimele, alți ingineri intră în workflow, AGENTS.md crește, jurnalul se umple, iar proiectele galbene încep să se miște. Curba e aproximativ exponențială, așa că o măsurătoare la treizeci de zile dezamăgește, iar una la nouăzeci arată tabloul întreg.


Kill signals ale buclei exterioare. Bucla primește kill signals așa cum Capitolul 8 le dă codebase-urilor. Patru sunt de ajuns: același diff aplicat și apoi revertat de la o iterație la alta; buget care arde în timp ce queue-ul nu scade; același eșec apărut a treia oară; orice iterație care a atins gate-ul. Oricare dintre ele înseamnă stop: citești jurnalul, repari cauza, abia apoi relansezi. O buclă repornită pe speranță e o buclă pe care ai încetat s-o mai controlezi. Blocul de review de dimineață din Anexa B.6 conține aceleași patru verificări.

Anexa A - Pentru manageri

Rutarea pe tier-uri, cele două puncte măsurate. Pattern-ul „advisor” al Anthropic împerechează un executor mai ieftin cu un model mai puternic, chemat la nevoie. Sonnet cu Opus ca advisor a obținut cu 2,7 puncte mai mult pe SWE-bench Multilingual decât Sonnet singur, la un cost per task cu 11,9% mai mic. Haiku cu un advisor Opus a obținut 41,2% pe BrowseComp față de 19,7% singur, rămânând cu 29% în urma lui Sonnet singur la scor, la un cost per task cu 85% mai mic. Potrivit pentru tier-urile mecanice ale buclei, greșit pentru research. Sursa: Anthropic, "The advisor strategy," Apr 9, 2026. Atenție: benchmark-uri ale vendorului pe propriile modele; cifre per task, nu un raport general.

Layout cache-first, taxa pe tool-uri și mascarea. Layout-ul cache-first a tăiat costul de API cu 41% până la 80% pe peste 500 de sesiuni de agent, la trei provideri (Lumer et al., Jan 31, 2026). Cifrele despre definițiile de tool-uri sunt la Capitolul 1, rezultatul despre mascare la Capitolul 6.

Euristica de încadrare, în formă lungă. Costul per inginer pe lună e mărginit de ce ar cheltui oricum echipa pe tooling similar (licențe de IDE, platforme de code intelligence, abonamente de coding asistat de AI) plus o fracțiune din timpul orar al unui inginer senior, economisit pe săptămână. Fă calculul cu stack-ul tău de tooling, costul orar complet, o estimare onestă a orelor economisite și oferta vendorului; break-even-ul vine repede când agentul economisește chiar și câteva ore pe lună per inginer.