Files
roafacturare/docs/progres_qa_factura.md
2026-09-17 22:36:46 +03:00

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_active EXISTA in input si trece pe true la 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):

  1. C:\Users\mmari\.claude\settings.json, hook SubagentStop: garda stop_hook_active. Era un echo static care reinjecta acelasi additionalContext la fiecare oprire de subagent - de aici bucla observata azi (patru agenti invartindu-se in gol). Backup: settings.json.bak_20260917.
  2. 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 -StareFile comportamentul e neschimbat.
  3. settings.json, env: CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=70, ca auto-compactarea sa cada dupa avertismentul lui context_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 care context_watch.ps1 il citea deja.
  • D:\ROA\ROAGEST\COMUN si D:\ROA\ROAFACTURARE\COMUN sunt checkout-uri separate ale aceluiasi repo comun.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.json trimite la context_watch.ps1 prin calea din checkout-ul ROAGEST. Pe VM 304 trebuie verificat ca D:\ROA\ROAGEST\COMUN\utile\context_watch.ps1 exista 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.