Voost Control · decizie pe PR #1281 · 12 iul 2026

Gate-uri pe cuvinte: cine decide, lista sau AI-ul?

După incidentul Kaya (8 task-uri „Capture scope…” dintr-un singur apel), extracția a primit o regulă nouă. Regula trăiește în două locuri: în promptul AI-ului — și într-o listă de cuvinte hardcodată care poate refuza task-uri fără să te întrebe. Pagina asta îți arată exact cum funcționează lista, unde minte, și ce ai putea pune în locul ei.

ACTUL 1

Unde stă poarta în lanț

Un apel trece prin cinci stații până devine task în sistem. Apasă pe fiecare stație ca să vezi ce face — și observă că poarta pe cuvinte vine după ce AI-ul a decis deja.

Poarta nu vede apelul. Vede doar titlul — un rând de text — și o listă de cuvinte.

ACTUL 2

Matcher-ul, pe viu

Regula din information_capture_task are exact două condiții: primul cuvânt al titlului e un verb de captură din listă, și titlul conține undeva un substantiv de informație din a doua listă. Ambele aprinse → task refuzat. Alege un titlu real sau scrie unul:

Titluri de task propuse de extracție apasă unul

Condiția 1 · primul cuvânt e verb de captură?

Condiția 2 · conține substantiv de informație?

Al treilea titlu e capcana: „Documentează cerințele tehnice pentru Holzbiber” poate fi un livrabil pe care cineva chiar l-a promis în apel — și lista îl omoară la fel de silențios ca pe un task-gunoi. Asta e un fals pozitiv blocant.

ACTUL 3

Două specii de liste — doar una e sănătoasă

Nu orice listă de cuvinte e o problemă. Diferența e ce fel de întrebare i se pune.

Specia 1 · vocabular închis → calcul

În câteva luni” înseamnă mereu același lucru: e o expresie de timp, cu sens fix. Lista din resolveRelativeDueDate (PR #1273) doar traduce expresia în aritmetică, ancorată la data apelului — 6 iulie, apelul Kaya. Ce nu recunoaște, refuză explicit și cere omul.

Greșeala maximă posibilă: o expresie nerecunoscută ajunge la om. Nimic nu se pierde.

Specia 2 · clasificare deschisă → ghicit

„E titlul ăsta o informație sau un angajament?” nu e o întrebare despre cuvinte — e despre ce s-a întâmplat în apel. Același titlu, două apeluri diferite:

Client Holzbiber: „Înainte de ofertă, ne trebuie documentația cerințelor tehnice — ne-o puteți pregăti până vineri?” Radu: „Da, v-o trimit până vineri.” → cineva a promis munca asta.
Client Kaya: „Dacă vreodată facem redesignul, aș vrea calculatoare de preț pe produse… dar nu acum, poate la toamnă.” → nimeni nu s-a angajat la nimic.
Lista de cuvinte ziceBLOCHEAZĂ
același răspuns, orice ar fi fost în apel — nu vede transcriptul
AI-ul cu transcriptul ziceTask legitim — livrabil promis, cu termen

Lista dă un singur răspuns pentru ambele apeluri. AI-ul care extrage dă răspunsul corect în fiecare — pentru că el chiar a citit apelul.

ACTUL 4

Patru locuri unde poate sta decizia

Urmărește același task — livrabilul Holzbiber promis vineri, cel pe care lista îl crede gunoi — prin fiecare variantă:

VariantăFals pozitiv blocantVezi când AI-ul greșeșteComplexitateCine decide
A · Blockerda — task promis, pierdut silențiosda (prea agresiv)2 liste de întreținutlista
B · Warningniciodată — totul treceda — badge în reviewo vorbă schimbatăAI propune, tu decizi
C · Doar promptniciodatănu — zero semnal la derapajzero coddoar AI-ul
D · LLM-judecătorrar, dar posibilda, cu contextîncă un model, cost, latențăal doilea AI
ACTUL 5

Verdictul, pe criteriile tale

„Procesul de decizie l-aș lăsa pe AI-ul care extrage, nu pe o hardcodare pe anumite cuvinte.”criteriul tău, 12 iul
„Nu introduce concepte noi care au un reprezentant direct deja implementat.”regula ta de casă, 10 iul

Aplicate împreună: varianta B. Decizia semantică rămâne la AI-ul care are transcriptul (criteriul 1), iar semnalul folosește severitatea warning care există deja în sistemul de gate-uri — 8 folosiri în fișier, niciun concept nou (criteriul 2). Lista nu mai judecă; doar ridică mâna. Concret, diferența e o vorbă:

code: "information_capture_task", - severity: "blocker", // lista decide: task refuzat, tu nu afli + severity: "warning", // lista semnalează: task trece, tu vezi badge-ul

Iar dacă în 30 de zile warning-ul nu prinde nimic ce tu n-ai fi prins oricum în review, îl ștergi și rămâi pe varianta C — promptul + golden fixtures din CI sunt deja plasa. Varianta D o păstrezi pentru ziua în care apar derapaje pe care review-ul uman nu le mai prinde la volum.

Listele închise calculează. Listele deschise ghicesc.
Calculul ține de cod; ghicitul ține de AI — și de tine.