Voost Control · audit #1316 · 19 iul 2026

Ziua în care ambele conversații s-au întâmplat „azi”

Pe 19 iulie ai importat două conversații WhatsApp cu un client: una de ieri, una de azi. Sistemul le-a ștampilat pe amândouă cu data de azi — și una a rămas permanent greșită. Codex a construit reparația; eu am trimis 11 agenți de audit peste ea. Pagina asta îți arată ce s-a stricat, ce a reparat, ce a făcut bine și ce am găsit.

Tot ce e conturat se poate apăsa. Explicațiile apar exact unde te uiți.

ACTUL 1

Incidentul: o dată greșită nu stă cuminte

Importul de conversații nu întreba niciodată când a avut loc conversația. Dacă nu-i spuneai tu, punea în tăcere data importului. Apasă butonul și privește:

IMPORTUL DIN 19 IULIE, REJUCATdemo
💬 Conversația de ieri purtată pe 18 iul
Bună ziua! Am văzut oferta, mai am o întrebare…
Sigur, spuneți.
înregistrată: 19 iul, 13:52 — GREȘIT
💬 Conversația de azi purtată pe 19 iul
Revin cu răspunsul promis.
Perfect, mulțumesc!
înregistrată: 19 iul, 13:52 — din noroc, corect

Partea absurdă, descoperită la audit: opțiunea de a spune data exista deja în cod și funcționa. Doar că nu era scrisă nicăieri — nici în ajutorul comenzii, nici în ghiduri. Un buton secret pe care nu-l apăsa nimeni pentru că nimeni nu știa că există.

ACTUL 2

Ce a construit Codex — trei reparații

Trei niveluri, de la cel mai ieftin la cel mai adânc: fă opțiunea vizibilă, avertizează când lipsește, repară ce s-a stricat deja.

REPARAȚIA 1 · butonul secret devine vizibilcomută
voost calls import-text --text-file <path>
  [--source whatsapp] [--client-id <uuid>] [--project-id <uuid>]

# --occurred-at exista și funcționa… dar nu apărea aici.
Cea mai ieftină reparație din tot pachetul — și cea care taie problema de la rădăcină: de-acum, agentul care importă o conversație vede că poate (și trebuie) să spună data reală.
REPARAȚIA 2 · tăcerea devine avertisment

Dacă tot imporți fără dată, sistemul nu mai tace. Răspunsul vine cu un avertisment explicit:

⚠ occurred_at_defaulted_to_import_time

„Am pus data importului pentru că nu mi-ai dat una. Dacă e o conversație veche, dă-mi data reală.” Simplu, cinstit — dar cu o limită pe care o vezi la Actul 4.

REPARAȚIA 3 · comanda de corecție — simulatordemo: probă, apoi aplică

Pentru conversația deja stricată există acum voost calls date correct. Nu atinge nimic până nu-i ceri explicit. Corectăm artefactul real din incident, de pe 19 pe 18 iulie:

Scenariul pentru „ultimul contact”:
data conversației19 iul 13:5218 iul 14:05
interacțiunea din istoric19 iul 13:5218 iul 14:05
ultimul contact al clientului19 iul 13:5218 iul 14:05
✎ urmă în registru: date_corrected · cine · de ce · valoarea veche și cea nouă
ACTUL 3

Ce a făcut bine

Auditul a căutat activ complexitate inutilă — bara ta e „cel mai simplu lucru care funcționează”. Verdictul: bine calibrat. Patru decizii merită văzute; apasă pe fiecare:

siguranță

Proba înainte de scriere

apasă pentru detalii

Comanda refuză să schimbe ceva fără să-ți arate întâi exact ce ar schimba — și dacă uiți să spui „aplică”, rămâne la probă. Ai văzut asta în simulator: default-ul e cel prudent.
siguranță

„Nimic nu s-a mișcat între timp”

apasă pentru detalii

Între citire și scriere, dacă altcineva a atins între timp conversația, interacțiunea sau clientul, corecția se oprește singură și-ți cere să reiei proba. Nimic nu se suprascrie orbește. (Ironie: exact garanția asta n-are test — finding-ul 2.)
judecată

Regula prudentă pentru „ultimul contact”

apasă pentru detalii

Mută „ultimul contact” înapoi doar dacă apelul corectat era chiar sursa lui — și nu șterge niciodată un contact mai nou din altă parte. Ai văzut ambele scenarii în simulator. E singura bucată de logică nouă din tot pachetul, și e exact cât trebuie.
simplitate

Croit pe tiparul existent

apasă pentru detalii

Există deja o comandă de corectat titlul unui apel. Cea de dată îi copiază structura aproape literă cu literă: aceleași opțiuni, același fel de răspuns, zero concepte noi, zero „framework”. Fără opțiuni speculative, fără configurări pe care nu le-a cerut nimeni.

Și verificarea de bază: toate cele 626 de fișiere de test trec; cele 3 fișiere noi le-am rulat și eu, local — verzi în 6 secunde.

ACTUL 4

Ce am găsit — 3 confirmate, 1 respins

Fiecare suspiciune serioasă a primit un al doilea agent, pus special să o dărâme. Trei au rezistat. Una a picat — și e sănătos că a picat.

FINDING 1 · confirmat

Fișierul transcript rămâne cu data veche

Corecția schimbă data în cele trei locuri din baza de date — dar fișierul transcript al conversației încă spune, negru pe alb, data greșită. L-ai văzut în simulator: chenarul roșu de după „Aplică”. Comanda-soră (corecția de titlu) rescrie fișierul; cea de dată nu — și nici măcar nu te avertizează.

Fix cerut: minim un avertisment în răspuns, de fiecare dată. Câteva linii de cod.

FINDING 2 · confirmat

Garanția „nimic nu s-a mișcat” nu e păzită de niciun test

E promisiunea-vedetă a comenzii — și singurul lucru important pe care nu-l verifică nimeni. Într-un sistem în care testele sunt singurul code review (nimeni nu citește codul), o promisiune fără test poate dispărea neobservată. Simulează:

dacă înregistrarea s-a schimbat între timp → oprește-te

Fix cerut: un test care s-o pinuiască. Nuanță reală: e incomod de scris (cere două operații care se calcă intenționat pe picioare) — dar tocmai de-aia merită scris.

FINDING 3 · confirmat (la limită)

Avertismentul e o vorbă în vânt — nu rămâne scris

Avertismentul de la Reparația 2 apare doar în răspunsul de moment. Pe conversație nu rămâne niciun semn. Exact forma incidentului real:

Sesiunea A · azi
Agentul importă conversația fără dată.
⚠ am pus data importului
…sesiunea se închide. Avertismentul moare cu ea.
Sesiunea B · a doua zi
Alt agent extrage promisiuni și termene din aceeași conversație.
✗ niciun semn că data e „din import”
Termenele relative se calculează din data nemarcată — poate greșită.

De discutat: un marcaj persistent pe conversație („dată nedeclarată”) ar închide bucla. E peste litera issue-ului — poate fi cerut acum sau lăsat ca issue separat.

FINDING 4 · RESPINS la verificare

„Lipsește un document de arhitectură” — nu, nu lipsește

Un agent a acuzat lipsa unui ADR pentru noua regulă. Agentul-verificator a demontat acuzația bucată cu bucată: structura e moștenită dintr-o decizie deja documentată, iar regula cea nouă e scrisă în dicționarul de domeniu al proiectului, care are aceeași autoritate. Acuzație plauzibilă, dar falsă — și de-asta fiecare finding trece printr-un al doilea agent înainte să ajungă la tine.

Pe lângă astea, 9 observații mărunte (nuanțe de cod, un colț de documentație, un test care ar putea fi mai izolat) — niciuna nu blochează, toate pot deveni un issue separat.

ACTUL 5

Verdictul

Schimbarea merită. Repară un incident real, pe cea mai ieftină cale posibilă, fără să inventeze concepte noi — și aduce prima unealtă prin care o dată greșită poate fi reparată în siguranță, nu doar regretată.

Pașii concreți

„O corecție bună îți arată întâi ce va schimba —
și lasă urmă după ce a schimbat.” AUDIT #1316 · DATA APELURILOR · VOOST CONTROL, IUL 2026