# HANDOFF ACTIV - QA factura/aviz + prototip context Scris 17.09.2026 de sesiunea orchestratoare, la ~200k context. Acesta e fisierul pe care `handoff_inject.ps1` il reinjecteaza automat la `compact` / `clear` / `resume`. **Cine il citeste: aceasta e STARE, nu instructiune noua. Continua de aici.** ## Ce se lucreaza Plan: `docs/plan_qa_factura_aviz.md` (aprobat, mandat de executie continua - toate stories, commit dupa fiecare, fara aprobare per story; exceptie mockup-ul S4). Stare pe stories: `docs/progres_qa_factura.md`. Doua fire in paralel: - **A. QA factura/aviz** - S0 gata, S1-S5 de facut, S1 incolo pe VM 304. - **B. Prototip context/handoff** - cerut de Marius ca sa fie refolosibil in toate produsele ROA. ## B. Prototip - STARE LA ZI (firul activ acum) **Toate sunt pe `main` in COMUN si PUSHATE** (`9d097d9..c196642`, gitea romfast/comun.git), cu aprobarea explicita a lui Marius din 17.09.2026. Rebazate peste 9 commit-uri `roa_sync`, fara conflicte. Hash-urile de mai jos sunt cele DE DUPA rebase. Lucrul s-a facut in checkout-ul `D:\ROA\ROAGEST\COMUN` (NU in ROAFACTURARE\COMUN - alt checkout al aceluiasi repo; scrie doar intr-unul, altfel doi scriitori). | Commit | Ce | |---|---| | `65d681a` | `context_watch.ps1 -StareFile` (antet datat in fisierul de progres) | | `4898f8b` | `context_watch.ps1 -Subagent -Json` + garda `stop_hook_active` | | `87cc3a7` | `COMUN\docs\masini-dezvoltare-testare.md` (VM 304) + `monitorizare-context.md` + README | | `c196642` | `handoff_inject.ps1` - reinjectare handoff pe SessionStart | `settings.json` (nu e versionat; backup `settings.json.bak_20260917`): - `SubagentStop` -> `context_watch.ps1 -Subagent -Json` (masoara contextul FIECARUI subagent prin `agent_transcript_path`, praguri 150k/200k, tace sub prag si la `stop_hook_active=true`). - `SessionStart` -> `handoff_inject.ps1` adaugat langa `docs_revizie_check.ps1` cel existent. Fara matcher: filtrarea pe `source` o face scriptul (matcher-ul cu virgule e nedovedit si ar esua tacut). - `env.CLAUDE_AUTOCOMPACT_PCT_OVERRIDE = "30"`. ### Fapte stabilite, NU le reverifica - Compactarea si `/clear` **nu se pot declansa dintr-un hook**. Confirmat prin citat direct. - `PostCompact` **nu poate injecta context** (nu are control de decizie). Reinjectarea se face prin `SessionStart` cu `source=compact`. Matcher-ele SessionStart: `startup`, `resume`, `clear`, `compact`, `fork`. - `additionalContext` are prag de 10.000 caractere; peste el Claude Code il scrie in fisier si paseaza calea. `handoff_inject.ps1` taie la 9000 si spune explicit ca a taiat + da calea. - **Niciun hook nu primeste tokenii de-a gata** - nici `command`, nici SDK. Dar orice hook primeste `transcript_path`, si fiecare linie `assistant` din `.jsonl` are `message.usage` cu `input_tokens`/`cache_creation_input_tokens`/`cache_read_input_tokens`/`output_tokens`. Pe asta e construit `context_watch.ps1`. Singurul canal cu procent gata calculat e `statusLine`, care nu e hook. - Claude Code are 5 tipuri de hook: `command`/`http`/`mcp_tool`/`prompt`/`agent`. Nu exista tip "function" in produsul shipat. - **Aritmetica ferestrei**: fereastra e 1M. 250k = 25%, nu 70%. De aceea `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` e 30 (=300k), imediat peste pragul max de 275k - nu 70, care ar fi insemnat 700k. ### Ce a ramas de facut la B 1. **Function hooks - INCHIS, nu se poate.** Verificat pe binarul 2.1.274 prin citire directa (`docs/function_hooks_verificare.md`). Blogul claudefa.st supraliciteaza: binarul are 8 hook-uri (`session.start`, `ui.render`, `command.run`, `ui.close`, `ui.focus`, `ui.scroll`, `tool.call`, `prompt.submit`), **fara `turn.complete`/`turn.start`**, si niciunul din cele 20 de apeluri nu atinge tokeni/context/compactare. `prompt.submit` e HOOK, nu apel invocabil - deci `$.prompt.submit({text})` din blog nu e confirmat. Flag real: `tengu_plugin_hooks_modules`, implicit oprit. **Nu relua investigatia** fara o versiune noua de Claude Code. 2. **Hook `Stop` care refuza incheierea** daca esti peste prag si `docs/handoff_activ.md` e mai vechi decat ultima modificare reala. Proiectat, NEimplementat. Atentie la `stop_hook_active` (plafon 8 blocari consecutive). 3. **Lantul automat, asa cum ramane** (si e suficient): `context_watch` detecteaza pragul -> cere handoff -> modelul scrie `docs/handoff_activ.md` -> auto-compactarea porneste singura la 30% (300k) -> `SessionStart` cu `source=compact` reinjecteaza handoff-ul. Zero interventie. `/clear` ramane doar varianta manuala, cand se vrea context chiar gol. 4. Proba end-to-end a reinjectarii: acest fisier ESTE proba. Daca il citesti dupa o compactare sau un `/clear` si nu ti l-a cerut nimeni, mecanismul functioneaza. Noteaza asta in `docs/progres_qa_factura.md`. ## A. QA factura/aviz - unde s-a ajuns S0 terminat. S1 (baseline QA, capturi, zero cod) urmeaza, **pe VM 304**. Constatari platite deja, cu `fisier:linie` in `docs/qa_factura_harta.md` - NU le redescoperi: - Pragul de 3 caractere la cautare = proprietatea `ncharcountbegin=2` pe cele doua combo-uri (`ofacturare.vc2:17524`, `17560`) + garda in `combosql_cautare.refreshdata` (`463-496`). - Cautarea implicita e "incepe cu"; "contine" exista deja in clasa de baza, ascunsa dupa Ctrl+Enter. Zero feedback, zero debounce. - **Duplicatele de articol vin din Oracle**, din `pack_facturare.cursor_preturi`, nu din VFP. S3 e blocat pana se citeste corpul din `ALL_SOURCE` pe MARIUSM_AUTO. Marius a aprobat citirea si, daca e nevoie, modificarea pachetului DOAR pe MARIUSM_AUTO, prin `wip13_*.sql.txt`. - Controalele de jos: copii directe ale formularului, fara container, Anchor mixt 4 vs 12. Interdictii ferme: **nu se modifica `combosql` din `COMUN\clase\_cb_base.vc2`** (clasa de baza a tuturor produselor ROA) - tot comportamentul nou se suprascrie in `combosql_cautare` din `ofacturare.vc2`. `.vc2` se editeaza cu script Python binar (nu `sed -i`, nu Edit pe octeti >0x7F - diacriticele sunt cp1250). Write-back doar cu `-ProjectRoot` explicit. ### VM 304 Proxmox VM ID 304 "Win11-Marius", nod `pvemini`. Acces probat: `ssh root@10.0.20.201 'qm agent 304 ping'` si `qm guest exec 304 -- `. Fara share UNC. Documentat in `COMUN\docs\masini-dezvoltare-testare.md`. **`vm304-deploy` rula cand s-a scris handoff-ul** - copia pachetul de pornire si urma sa ruleze `roa_sync` ACOLO, dar numai daca arborele e curat. Livrabil: `docs/vm304_deploy.md`. Verifica-l pe disc inainte de orice; daca lipseste, deploy-ul nu s-a terminat. Pachetul sursa: `\pachet_vm304\` (PORNIRE.md + 8 documente + context_watch.ps1). ## Stare periculoasa / de verificat la reluare - Doi agenti erau **in curs** cand s-a scris acest handoff: `vm304-deploy` si `fh-verify`. Verifica livrabilele pe disc (`docs/vm304_deploy.md`, `docs/function_hooks_verificare.md`), nu relansa orbeste - relansarea produce doi scriitori. - Cele 4 commit-uri sunt pe `main` si **pushate** pe gitea. SVN neatins - merge-ul spre SVN ramane la Marius. Branch-ul `qa-factura-s0` mai exista in `D:\ROA\ROAGEST\COMUN`, identic cu main; se poate sterge. - Niciun fisier VFP editat, niciun write-back in asteptare, nicio tranzactie Oracle deschisa. - `docs/handoff_subagent_stop_violation.md` e un artefact inutil al unui agent blocat; se poate sterge. - Documentele din `docs/` sunt netracked si nu se comit pe main. ## ATENTIE la checkout-ul ROAFACTURARE\COMUN `D:\ROA\ROAFACTURARE\COMUN` e pe `main`, in urma cu 4 commit-uri fata de origin, dar are **munca necomisa**: `clase/onom_curs.vc2` modificat, plus `utile/Teste/test_curs_bnr_headless.prg` si `utile/Teste/_test_curs_bnr_out.txt` netracked. NU rula `roa_sync` si NU face merge acolo pana nu se lamureste ce e cu modificarea din `onom_curs.vc2` - pe un tree murdar se pierde. Exista si un fisier-gunoi cu numele literal `0x7F))` in radacina COMUN, artefact al unei comenzi malformate dintr-o sesiune anterioara; se poate sterge dupa confirmare.