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.
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.
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:
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.
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.
„Î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.
„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:
același răspuns, orice ar fi fost în apel — nu vede transcriptul
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.
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 blocant | Vezi când AI-ul greșește | Complexitate | Cine decide |
|---|---|---|---|---|
| A · Blocker | da — task promis, pierdut silențios | da (prea agresiv) | 2 liste de întreținut | lista |
| B · Warning | niciodată — totul trece | da — badge în review | o vorbă schimbată | AI propune, tu decizi |
| C · Doar prompt | niciodată | nu — zero semnal la derapaj | zero cod | doar AI-ul |
| D · LLM-judecător | rar, dar posibil | da, cu context | încă un model, cost, latență | al doilea AI |
Verdictul, pe criteriile tale
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ă:
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.