planul V2 · trei valuri de review · 12 iul 2026

Am pus trei minți să dărâme planul. L-au făcut mai tare.

V2 = fiecare worker de teste primește propria copie a bazei de date. Planul de mentenabilitate a trecut prin trei valuri: designul (Fable, în conversație), critica (gpt-5.6-sol, citind codul prototipului) și arbitrajul (un Fable independent, care a judecat ambele straturi verificând totul în cod). Fiecare val a văzut ce valul dinainte nu putea. Pagina asta îți arată, în termeni simpli, ce a găsit fiecare — și ce a rămas în picioare.

14
constatări gpt-5.6-sol pe design — fiecare cu soarta ei mai jos
2
probleme găsite DOAR de arbitru — inclusiv una care atinge măsurătoarea de 22,5s
5
idei tăiate ca „prea mult" — corect în teorie, cost greșit pentru repo-ul ăsta
2 PR
forma finală: corectitudine + hardening, cu definition of done măsurabil
ACTUL 1

Cele trei valuri, pe scurt

Valul 0 · designul

6 principii

Ideea-mamă: agenții care scriu teste să nu afle niciodată că există un modul de izolare. Zero de învățat, un singur fișier adânc, curățenie mecanică, modulul păzit de propriile teste.

Valul 1 · critica gpt-5.6-sol

14 constatări

Superputerea lui: a citit codul prototipului rând cu rând și a găsit promisiuni mai mari decât livrarea — plus locurile unde „fără opțiuni" și „ștergem tot ce e vechi" ar fi dat înapoi.

Valul 2 · arbitrul Fable

verdicte + 2 descoperiri

Superputerea lui: context proaspăt + mandat de a judeca AMBELE straturi. A confirmat, a ieftinit fix-uri, a tăiat overkill — și a găsit două lucruri pe care nici designul, nici critica nu le văzuseră.

De ce valuri, nu un singur review mare? Pentru că fiecare strat are alt unghi mort: autorul nu-și vede promisiunile umflate, criticul nu-și vede costul propriilor cerințe, și amândoi împart aceleași presupuneri nespuse — pe care doar un al treilea, pus să-i judece pe amândoi, le atacă.
ACTUL 2

Fiecare descoperire, pe limba noastră

Apasă pe orice constatare. Fiecare are: ce înseamnă simplu, cine a găsit-o, și ce s-a ales de ea.

Toate constatările, cu soarta lor
intrat în plan corect, dar fix mai ieftin decât cerea tăiat ca overkill descoperire nouă a arbitrului
Workerul refolosit = moștenești mizeria Cutii fără etichetă: janitorii se calcă Eticheta matriței poate minți „Există" nu înseamnă „e gata" Plasele vechi pleacă lană cu lană Fațada de orchestrare Opțiuni pe două niveluri Buget global de conexiuni Sortatorul nu vede ocolurile Curățenia veche primește alt rol Teardown-ul nu atinge matrițele comune Gardianul pe cuvinte era fragil Matricea de canari Doc-ul nu se reduce la un paragraf ⚠ Bug-ul lanes-parallel (atinge 22,5s) ⚠ Ochelarii vechi (incidentul de azi) Costul ascuns pe discul 92% plin Un filtru de nume până la producție
ACTUL 3

Descoperirea #1 a arbitrului: janitorii care se calcă

Două lane pornesc simultan (așa am măsurat 22,5s). Fiecare are un janitor care „face curat" la pornire. Fără etichete pe cutii, curățenia unuia e dezastrul celuilalt.

Demo — apasă pornește, apoi încearcă și cu fix
fix: etichetă de rulare pe cutii — oprit
Lana cu bază de date
Lana „pură" (n-ar trebui să aibă baze!)
Cu fix-ul pornit se văd trei schimbări: cutiile poartă numele rulării, janitorul aruncă doar cutii orfane (proprietar mort), iar lana pură nu mai creează cutii deloc — primește o adresă inexistentă și orice atingere de bază pică pe loc, cu vinovatul numit.
ACTUL 4

Descoperirea #2: ochelarii cu dioptriile vechi

Codul nu citește baza direct — citește prin „ochelari": clientul Prisma generat din schemă. Azi, 17 teste au picat pentru că ochelarii erau generați pe schema de săptămâna trecută. Planul inițial nu verifica asta nicăieri.

Demo — schimbă schema din repo și vezi check-ul
schema din repo (adevărul)
Ticket { id, title, status }
ochelarii: clientul Prisma generat în node_modules
Ticket { id, title, status }
Fără check: testele rulează și pică misterios, cu erori care arată spre codul aplicației (17 teste azi, o oră de diagnoză). Cu check-ul de ~10 linii: rularea se oprește înainte de primul test, cu fix-ul în mesaj.
ACTUL 5

Ce a rămas: două PR-uri și un criteriu

PR-1 · corectitudine (blocant)
  1. Etichetă de rulare pe clone + janitor pe „proprietarul mai trăiește?"
  2. Matrița sub lacăt: build pe nume temporar → redenumire = gata
  3. Eticheta matriței doar din migrații (+ check separat de divergență)
  4. Check-ul de „ochelari vechi" (client Prisma stale) cu mesaj acționabil
  5. Golire structurală (TRUNCATE) între fișiere — face criteriul adevărat
  6. Lana pură: adresă inexistentă, zero clone, pică closed la orice atingere
  7. URL-ul păstrează parametrii; erorile arată stderr-ul, nu-l înghit
  8. Band-aid-urile se retrag DOAR în unit-with-db; testul pattern-ului de nume care nu poate atinge producția

Done = perechea de aur 10/10 fără mock-uri · lanes-parallel verde · două rulări suprapuse nu se ating · clientul stale pică cu mesaj · 22,5–25,8s re-confirmat după fix

PR-2 · hardening (separat)
  • ADR (garanții + stare per lană) + TESTING.md rescris ca contract scurt + troubleshooting
  • GC de matrițe pe vârstă; teardown-ul nu atinge matrițele comune
  • Stresul nightly al perechii de aur; UN test comportamental de rulări concurente
  • Curățenia veche repoziționată (integrare + fișiere); ban îngust doar în fișierele-canar
  • Obiectul de politică al runnerului (workeri, limite, TTL) — într-un singur loc
respinse definitiv
  • Fațada de orchestrare (env-ul e transportul)
  • Contabilitatea globală de conexiuni (300 vs ~25)
  • Catalogul de „readiness" (redenumirea ajunge)
  • Canarii vitest-în-vitest (gardieni flaky = gardieni auto-ștergibili)
  • Seed hooks (până apare al doilea consumator real)
criteriul de acceptanță — versiunea finală (a arbitrului)

Orice test, sub runnerul standard, poate citi, muta și șterge date din bază fără niciun import sau convenție de izolare — și găsește la începutul fiecărui fișier același baseline definit, indiferent de ordine, worker, rulări concurente sau crash-uri anterioare. Când runnerul nu poate garanta asta, pică înainte de primul test, cu eroarea care numește fix-ul.

Pe românește: agentul care scrie un test nou nu trebuie să știe nimic și nu poate strica nimic. Iar când infrastructura însăși are o problemă, afli în secunda 1, cu soluția în mesaj — nu după o oră de vânat 17 teste picate „misterios".
mantra

Fiecare val de review vede exact unghiul mort al valului dinainte. De-aia sunt valuri, nu un val.