5.4 KiB
Progres QA factura/aviz
Plan: docs/plan_qa_factura_aviz.md (aprobat 17.09.2026, mandat de executie continua).
Acest fisier spune unde s-a ajuns, nu ce e de facut. Se actualizeaza dupa FIECARE story.
Harti de pornire (read-only, nu se refac):
docs/qa_factura_harta.md - harta de cod a formularului
docs/qa_factura_unelte.md - harness UI, headless, Oracle, hook-uri existente
docs/qa_factura_hooks_ref.md - referinta oficiala de hook-uri
Stare pe story
| Story | Stare | Unde |
|---|---|---|
| S0 prototip context/handoff | TERMINAT 17.09.2026 | docs/s0_context_hook.md |
| S1 baseline QA cu capturi | de facut, pe VM 304 | - |
| S2 cautare articole | de facut | - |
| S3 selector lista de preturi | blocat pana se citeste pack_facturare.cursor_preturi |
- |
| S4 zona totaluri+discount | de facut, mockup inainte | - |
| S5 regresie | de facut | - |
S0 - terminat (doua runde)
Runda 2 (dupa ce prima s-a dovedit nedovedita). Prima varianta a lui S0 a fost probata doar
cu stdin sintetic; in ciclul real bucla a continuat. Am instalat logare temporara pe hook si am
capturat inputul real al lui SubagentStop. Ce a iesit:
stop_hook_activeEXISTA in input si trece petruela a doua declansare - garda e corecta. Bucla observata venea de la agenti porniti inainte de fix.- Mecanismul buclei: mesajul injectat trezeste agentul idle, el raspunde, redevine idle, hook-ul se declanseaza iar.
- Inputul contine
agent_transcript_path- transcriptul separat al subagentului oprit. Deci un hook POATE masura contextul fiecarui subagent, nu doar al sesiunii.
Consecinta: context_watch.ps1 are acum -Subagent (citeste agent_transcript_path, praguri
150k/200k, mai joase decat la sesiunea principala) si -Json (ambaleaza in
hookSpecificOutput). Garda stop_hook_active a intrat in script, deci comanda hook-ului e o
singura linie. Logarea temporara e scoasa.
Probe pe input real capturat: subagent peste prag -> mesaj cu numele agentului si 40k; sub prag
-> tacere; stop_hook_active=true -> tacere. Comis: 9823f1e pe qa-factura-s0.
Compromis acceptat: mesajul vechi "verifica daca subagentul si-a scris starea pe disc" nu mai apare la fiecare oprire, ci doar in avertismentul de context.
Corectie de fond, dupa ce Marius a contestat afirmatia: e fals ca "niciun hook nu poate afla
contextul". Niciun hook nu primeste tokenii de-a gata (nici command, nici function hook din
SDK), dar orice hook primeste transcript_path si poate citi singur usage din JSONL. Doar
statusLine primeste context_window.used_percentage gata calculat, si nu e hook.
Detalii: docs/hooks_functii_context.md.
S0 - runda 1
Trei modificari, toate probate (detalii si rezultatele probelor in docs/s0_context_hook.md):
C:\Users\mmari\.claude\settings.json, hookSubagentStop: gardastop_hook_active. Era unechostatic care reinjecta acelasiadditionalContextla fiecare oprire de subagent - de aici bucla observata azi (patru agenti invartindu-se in gol). Backup:settings.json.bak_20260917.D:\ROA\ROAGEST\COMUN\utile\context_watch.ps1: parametru nou-StareFile. La atingerea pragului scrie/inlocuieste un singur antet pe primul rand al fisierului de stare (<!-- context_watch: data ora | tokeni: N | nivel: ... -->), fara sa atinga restul continutului. Fara-StareFilecomportamentul e neschimbat.settings.json,env:CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=70, ca auto-compactarea sa cada dupa avertismentul luicontext_watch, nu inaintea lui.
Ce s-a stabilit si nu se mai rediscuta:
- Compactarea nu poate fi declansata programatic dintr-un hook. Mecanismul ramas: hook avertizeaza -> modelul scrie handoff-ul -> compactarea vine singura la pragul coborat.
- Niciun hook nu primeste numarul de tokeni. Singura sursa e transcriptul JSONL
(
transcript_path), pe carecontext_watch.ps1il citea deja. D:\ROA\ROAGEST\COMUNsiD:\ROA\ROAFACTURARE\COMUNsunt checkout-uri separate ale aceluiasi repocomun.git. Scriptul e deci deja in biblioteca partajata; nu trebuie mutat.
Ramas deschis din S0:
- Proba pe un ciclu real cu subagent viu (garda a fost probata in izolare, cu stdin sintetic). Se confirma implicit la prima rulare de subagent din sesiunea urmatoare.
settings.jsontrimite lacontext_watch.ps1prin calea din checkout-ul ROAGEST. Pe VM 304 trebuie verificat caD:\ROA\ROAGEST\COMUN\utile\context_watch.ps1exista acolo, altfel hook-ul tace fara sa dea eroare.
VM 304 - ce s-a aflat
Din docs/vm304_acces.md: Proxmox VM ID 304 "Win11-Marius", nod pvemini, clona lui VM 303.
Acces probat si functional: ssh root@10.0.20.201 'qm agent 304 ping' -> raspunde;
comenzi in VM prin qm guest exec 304 -- <cmd>. Nu exista share UNC catre discul ei.
Documentatia NU mentioneaza VFP sau client Oracle instalat - de verificat pe teren, planul le
presupune. Credentialele sunt documentate in E:\proiecte\ROMFASTSQL\docs\ (nu se copiaza).
Marius a cerut explicit copierea directa si roa_sync rulat pe VM. Pachetul de pornire e
pregatit in scratchpad (pachet_vm304\ cu PORNIRE.md + cele 8 documente + context_watch.ps1);
rezultatul copierii si al lui roa_sync ajunge in docs/vm304_deploy.md.
Urmatorul pas
S1, pe VM 304: sesiune noua care porneste din docs/plan_qa_factura_aviz.md + acest fisier.
Baseline vizual pentru FACTURA si AVIZ, capturi la 1366x768 si maximizat, dovada pentru
constatarile C2, C4, C6 si C8 din plan. Nicio modificare de cod in S1.