Voost Control · audit PR „who-to-call-reality" · 13 iul 2026

Filtrul e bun. Dar cine se uită în vitrină?

Codex a rescris widgetul „Who to call today": din 19 rânduri amestecate, păstrează doar apelurile care chiar au sens. Am pus 4 agenți de audit pe el, pe unghiuri separate. Concluzia inițială a auditului: idee corectă, 2 bug-uri, vitrină goală. Apoi realitatea a corectat două premise — iar pe 13 iul PR-ul #1293 a intrat în main. Pagina păstrează amândouă: ce a văzut auditul și ce a decis operatorul.

Tot ce e conturat se poate apăsa. Constatările nu ți le povestesc — le declanșezi singur, cu soarta fiecăreia notată.

Corectitudine 1 limită + 1 intențielogica porților, cooldown, dedupe
Arhitectură 3x prea maresimplitate, unde stă logica
Teste solidenimic slăbit, câteva găuri
Plasament infirmat de Raducine vede lista de fapt
Apasă un agent ca să vezi, pe scurt, ce a găsit.
ACTUL 1

Ce propune PR-ul: patru porți

Înainte, orice lucru scadent devenea „sună". Acum, un rând intră în lista de telefon doar dacă trece patru porți — un singur „nu" îl scoate. Alege un caz real din săptămâna asta și urmărește-l prin porți:

PORȚILE, PE CAZURILE TALE REALEalege un caz
Poarta 1E chiar un apel?missed call, prim contact de lead, sau verb telefonic explicit în text
Poarta 2Poți suna azi?termen scadent, stare deschisă, număr de telefon rezolvabil
Poarta 3Realitatea încă spune „da"?fără apel conectat mai nou, fără cooldown, fără Decision în așteptare
Poarta 4E motivul curent?un singur rând per persoană — motivul cel mai concret câștigă
Până aici, auditul e de acord: astea sunt porțile corecte. Constatările lui au fost la implementarea a două dintre ele — poarta 1 (Actul 2) și poarta 3 (Actul 3) — cu sorți foarte diferite.
ACTUL 2

Limita reală: poarta 1 ghicește din cuvinte

„E chiar un apel?" se decide citind textul titlului — o listă de cuvinte care sună a telefon. Mai jos e exact regula din cod, portată 1:1 în pagină. Testeaz-o: apasă exemplele sau scrie orice titlu de task și apasă Enter.

OGLINDA VIE A REGULII · hasExplicitPhoneIntentscrie și testează
verb telefonic: cuvânt non-telefonic: care e primul?
sursa: src/lib/dashboard/widget-presenters.ts @ 80ec34ab (13 iul 2026) — dacă regula din cod se schimbă, pagina asta minte

Regula e onestă la ambiguu — „Follow-up cu Laurențiu" e refuzat corect, nu ghicit. Dar cuvintele înșală în ambele limbi: „suna" e și „a suna", și „sună bine", și „sună el"; „call" e și „on-call", și „callback endpoint". Auditul a confirmat prin execuție că toate cele patru exemple roșii de mai sus intră în lista de telefon deși niciunul nu e un apel pe care-l ai tu de dat. Fix clasa de zgomot pe care PR-ul promite s-o elimine. Contragreutatea: pe cele 19 rânduri reale din ziua auditului, clasificarea a fost corectă cap-coadă — falsurile de mai sus sunt construite, rare în datele tale. Verdict final: limită cunoscută, acceptată la merge.

Chiar autorul PR-ului recunoaște în ADR: soluția pe termen lung e un câmp tipizat actionChannel pe Task — recordul spune că e apel, nu ghicim din text. Întrebarea de pus: dacă tot știm destinația, de ce să livrăm întâi ghicitul?
ACTUL 3

„Bug”-ul care s-a dovedit intenție

ADR-ul promitea: pauză doar după apel fără răspuns. Codul face: pauză după orice contact înregistrat. Auditul a strigat „bug”. Radu a decis altfel. Declanșează întâi comportamentul:

BETTER LIFE — TASK TELEFONIC SCADENT AZIapasă un buton
Who to call today
Better Life — „apel final: decizie ofertă"azi
— niciun rând pentru Better Life, nicăieri —

De ce: pauza se calculează din Contact Attempt Trail, care numără tot — mesaje WhatsApp, apeluri răspunse, missed call-uri rezolvate. ADR-ul spunea „un no-answer creează cooldown”; codul spunea „orice încercare”. După decizia lui Radu, codul avea dreptate — așa că în branch s-a corectat documentația, nu codul: ADR-0092 + skill-urile spun acum „orice încercare de contact înregistrată”.

Decizia de produs (Radu, 13 iul 2026): „o conversație pe WhatsApp ar trebui să reseteze, pentru că până la urmă este o formă de comunicare.” Contactul e contact, indiferent de canal — presiunea de „sună-l” se relaxează. Salvată în memoria agenților ca regulă: niciun audit viitor n-o mai raportează ca bug.
ACTUL 4

Obiecția cea mare — și cum a căzut

Argumentul central al auditului stătea pe interviul din 5 iulie: „Dashboard-ul nu-l deschid niciodată”. Uite ce a văzut auditul — și corecția venită pe 13 iulie:

HARTA TA REALĂ DE NAVIGARE · interviu 5 iul 2026
CINE CONSUMĂ DATELE?apasă și numără
👁 Pagina Dashboardo deschizi?
👁 Bara „Action Required"widgetul nu e în ea
👁 CLI-ul voost (agenții)?
👁 Skill-urile agenților?
👁 Client 360 / Tasks / Call Vault?
Consumatori reali: 1 — exact cel care contează. Auditul numărase 0, pe o memorie veche de 8 zile; fără telemetrie de vizite, operatorul rămâne singura sursă de adevăr despre utilizare.

Iar datele din spate sunt vii — lista are ce afișa în fiecare zi:

7task-uri telefonice scadente azi, în producție
114încercări de contact în ultimele 30 de zile
0missed call-uri deschise acum (le rezolvi repede)
1consumator real: tu, pe Dashboard-ul re-adăugat în meniu
ACTUL 5

Verdictul, pe criteriul tău

Criteriul tău permanent: „cod minim, complexitate minimă, niciodată construit înaintea primului consumator real.” Cu consumatorul confirmat și cooldown-ul decis ca intenție, verdictul s-a răsturnat. Soarta fiecărei constatări:

Constatare auditVerdict inițialSoarta finală
„Vitrină goală” — 0 consumatorimotivul respingeriiINFIRMAT — Dashboard-ul e din nou în meniu, tu îl deschizi (13 iul)
Cooldown la orice contactbug P2INTENȚIE — decizia ta; s-a corectat documentația, nu codul
Clasificator: falsuri pozitivebug P2LIMITĂ ACCEPTATĂ — corect pe cele 19 rânduri reale; actionChannel rămâne destinația
~620 linii în fișierul greșitde refăcutFOLLOW-UP — refactor la următoarea atingere a zonei
Găuri de test (48h, decision-resolved)de adăugatFOLLOW-UP
PR #1293respins de auditMERGED în main — 13 iul 2026, ADR renumerotat 0092
AUDITUL

A citit codul, nu realitatea.

Faptele găsite au rămas fapte: regex-ul chiar acceptă falsuri, cooldown-ul chiar pornește la orice contact, fișierul chiar e de 3x. Dar două premise-cheie — cine deschide pagina și ce înseamnă „contact” — erau ale operatorului, nu ale codului.

REALITATEA

Două corecții de la tine.

Dashboard-ul e din nou folosit → consumatorul există. „O conversație pe WhatsApp ar trebui să reseteze” → bug-ul era regula dorită. Ambele salvate în memoria agenților, ca să nu fie re-descoperite ca probleme.

DECIZIA

Merged.

PR #1293 a intrat în main pe 13 iul: rebase peste 6 commit-uri noi, coliziunea de ADR rezolvată (0091→0092, regula casei), documentația cooldown-ului aliniată cu decizia ta, CI verde pe runner-ul self-hosted.

Ce a confirmat auditul ca solid (acum în main)

Ce s-a întâmplat concret la merge — și ce rămâne

„Auditul citește codul.
Realitatea o știe doar operatorul.” AUDIT → CORECȚIE → MERGE · PR #1293 · VOOST CONTROL, IUL 2026