159 lines
10 KiB
Markdown
159 lines
10 KiB
Markdown
# 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.**
|
|
|
|
## GAURA DE MECANISM, neacoperita - de rezolvat la reluare
|
|
|
|
Documentele din `docs/` (inclusiv ACEST fisier) sunt **netracked in git si nu se comit pe main**.
|
|
Deci nu au niciun transport automat: pe VM 304 au ajuns prin copiere manuala, si orice modificare
|
|
ulterioara pe o masina NU ajunge pe cealalta. Cele doua copii diverg tacut.
|
|
|
|
Mecanismul de reinjectare functioneaza perfect **in cadrul unei masini**, si deloc intre masini.
|
|
|
|
Solutia propusa, NEAPLICATA (cere decizia lui Marius): commit-ul documentelor de lucru pe un
|
|
**branch dedicat** in ROAFACTURARE (nu pe main - regula ramane), ca transportul sa fie `git`, nu
|
|
copierea manuala. Alternativ, un singur fisier de stare comis pe branch, iar restul raman locale.
|
|
|
|
Stare la 17.09.2026, dupa curatenie: pe AMBELE masini exista exact `plan_qa_factura_aviz.md`,
|
|
`progres_qa_factura.md`, `handoff_activ.md`, `qa_factura_harta.md`, `qa_factura_unelte.md`
|
|
(+ `PORNIRE.md` doar pe VM). Sincronizate manual. Orice divergenta de aici incolo e tacuta.
|
|
|
|
## 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
|
|
(raportul de cercetare a fost sters dupa condensare; concluzia e mai jos). 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 - CAPCANA DE MEDIU, cea mai importanta constatare
|
|
Tot ce se lanseaza prin `qm guest exec` ruleaza ca **SYSTEM in sesiunea 0 (`services`)**;
|
|
desktopul lui Marius e sesiunea 1 (`console`, user `romfast`). Verificat cu `query session`.
|
|
Consecinte platite:
|
|
- **GUI invizibil**: procesele ruleaza real, dar nu apar pe ecranul lui Marius. Deci **probele UI
|
|
vizibile din S1 NU se pot rula prin guest exec** - trebuie lansate din sesiunea interactiva de
|
|
pe VM (adica din sesiunea Claude Code pe care o deschide Marius acolo).
|
|
- **Fara credentiale**: `svn` lansat asa a stat agatat 14 minute asteptand autentificare. Procesele
|
|
au fost omorate (PID 9136/1048/1820). `roa_sync` il ruleaza Marius, din sesiunea lui, DUPA
|
|
`svn cleanup` (svn a fost intrerupt la mijloc, working copy-ul poate fi blocat).
|
|
- `roa_sync.ps1` s-a mutat in `COMUN\scripts\`; cel din `UTIL\foxbin2prg\` e doar stub.
|
|
- `exited: 0` din `qm guest exec-status` inseamna **inca ruleaza**, e boolean, nu cod de iesire.
|
|
Ce merge prin guest exec: copiat fisiere (EncodedCommand in bucati de ~1500 octeti), citit,
|
|
verificat, inventar de mediu.
|
|
|
|
Mediu confirmat pe VM: `D:\roa\ROAFACTURARE`, `D:\roa\ROAGEST`, vfp9.exe, `vfp_ui_harness.ps1`,
|
|
`test_init_env_auto_roafacturare.prg`, `vfp_symbols.ps1` - toate exista.
|
|
|
|
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 -- <cmd>`. 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 - anulat, vezi capcana de mediu de mai sus. Fara livrabil separat.
|
|
Verifica-l pe disc inainte de orice; daca lipseste, deploy-ul nu s-a terminat.
|
|
Pachetul sursa: `<scratchpad>\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`.
|
|
Livrabilele lor au fost condensate aici si sterse; nu le cauta pe disc,
|
|
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.
|
|
- 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.
|