Voost Control · valul #1265–#1272 · 10–12 iul 2026
Valul Kaya: 8 probleme dintr-o seară de operare
Pe 10 iulie ai livrat PRD #1245 și apoi ai folosit sistemul pe o zi reală. Seara aia a produs 8 issues — nu dintr-un plan, ci din frecarea cu realitatea: un apel Kaya, două canare agățate, un digest poluat. Pagina asta e harta valului: de unde a venit fiecare problemă, ce o repară, și ce a prins plasa de verificare încrucișată pe drum.
Seara de 10 iulie, oră cu oră
Fiecare incident din seara aia a devenit un issue. Apasă pe un moment ca să vezi ce s-a întâmplat de fapt:
Toate în aceeași seară, toate din folosire — nu din audit. De-asta valul ăsta nu e un PRD: e copilul operării.
Rejucarea apelului Kaya
Cel mai bun test al valului: același apel, prin sistemul de atunci și prin cel de acum. Comută:
Harta valului: 8 issues → 8 PR-uri
Apasă pe oricare pentru problemă → fix → unde e PR-ul:
Plasa încrucișată: cine a verificat pe cine
Fiecare PR a fost implementat de un model și verificat de celălalt: Fable a scris → gpt-5.6-sol a făcut review; gpt-5.6-sol a scris → Fable a auditat (cu run roșu re-verificat). Toate suitele erau verzi înainte de verificare — astea sunt defectele găsite după:
Niciunul n-ar fi fost prins de CI: suitele erau verzi. Verificarea a mers în ambele direcții — iar de două ori verificatorul uman al verificatorului (wrapper-ul) a respins finding-uri Codex greșite înainte să ajungă pe PR.
Ce rămâne pe masa ta
Ordinea de merge (minimizează conflictele; unde scrie ⚠, e o rezolvare mică de conflict):
- #1273 (date relative) — curat
- #1274 (dry-run safety) — curat
- #1275 (căutare) ⚠ inventarul PP: regenerează cu pnpm pp:inventory, nu-l uni de mână
- #1277 (canary + backfill; migrarea rulează la deploy) ⚠ ADR-0043: păstrează ambele note de extensie
- #1278 (ticket settle, ADR-0087) — curat
- #1279 (sweep horizon, ADR-0088) ⚠ INDEX.md: uniunea rândurilor, next-free → 0089
- #1281 (extracție; se retargetează singur pe main după #1273) ⚠ help CLI, docs/API.md, INDEX.md (next-free → 0090), inventar PP
- #1283 (UI grupare) — ultimul ⚠ docs/API.md + tasks.api.test.ts: păstrează ambele părți
Ordinea și conflictele sunt verificate mecanic cu git merge-tree de review-ul global — 9 conflicte reale, toate la nivel de docs/inventar, niciunul în codul de produs.
După deploy: migrarea #1277 rulează singură; apoi închizi manual cele două apeluri blocate — voost calls close-no-action --dry-run → --apply pe f5bbaeea / f7d80128. La final: pnpm dev:teardown pe cele 8 worktree-uri.
Verdictul review-ului global (Fable, pe compunerea celor 8): valul se compune — primitivele de date și ancoră sunt partajate, nu bifurcate; excluderea de canary acoperă și suprafețele noi. Un singur gap real de interacțiune, aflat în codul de pe main, nu în val: o Decizie de sweep emisă înainte ca aprobarea unui tichet să închidă task-ul poate fi încă aprobată din digest și răstoarnă rezultatul (done → cancelled). Tichet: #1284, de rezolvat înainte sau imediat după trenul de merge.
Rămase deschise: #1284 (guard-ul de mai sus), #1276 (frații de căutare), cele 8 task-uri Kaya deja create în producție (le superseduiești după deploy, acum în siguranță cu #1274), și curățenia discului intern (17 GiB — sub pragul de freeze al guard-ului).
Decizia de design a valului (a ta): gate-urile hard sunt doar pentru verificări deterministe; clasificarea semantică rămâne la AI și cel mult avertizează — consemnată în ADR-0089, argumentată în explainer-ul gate-urilor pe cuvinte.
Un PRD îți dă felii. O seară de folosit sistemul îți dă adevărul.
Valul ăsta e adevărul, cu plasă de siguranță.