# Context handover — 2026-08-31 Sesiune lungă, patru fire de lucru terminate și unul în curs. Totul e comis și împins. > **Infrastructura e deja documentată în acest repo** — nu o repet aici. Punctele de > intrare: [`CLAUDE.md`](CLAUDE.md), [`proxmox/README.md`](proxmox/README.md) și, pentru > chatboți, [`docs/chatboti-si-punti.md`](docs/chatboti-si-punti.md) (scris azi). > Documentul ăsta e doar despre **ce s-a schimbat azi și ce a rămas**. --- ## 1. Ce rulează acum (starea la finalul sesiunii) | | Stare | |---|---| | **Maria (WhatsApp + RAG)** | **LXC 171**, asociată la +40723197939, funcțională. 11 documente, sincronizare Drive la 10 min. | | Prototipul Maria de pe LXC 104 | **oprit și dezactivat**. `llama-qwen35.service` (LLM-ul, port 8091) și `flowise.service` rămân pornite acolo. | | Puntea Discord | activă, cu atașamente (imagini + fișiere text). | | Reindexare RAG | **era în curs la finalul sesiunii** — vezi „De verificat întâi" mai jos. | ## 2. De verificat întâi, la reluare Reindexarea pornită după corectarea `efactura-erori-rag.xml` s-ar putea să nu fi terminat. ```bash pgrep -af "sync.py" # gol = gata ls -la ~/.maria-bridge/rag_index.json # mtime recent = reconstruit python3 -c " import json,collections e=json.load(open('/home/claude/.maria-bridge/rag_index.json')) c=collections.Counter(x['source'] for x in e) print(len(e),'chunk-uri,',len(c),'documente') print(c.get('efactura-erori-rag.xml'),'din efactura-erori-rag.xml (8 = structurat corect, ~41 = inca text simplu)') " ``` O reindexare completă durează **~18–21 de minute** (embedding CPU-only, ~7,3 s per chunk). Nu e blocată — chiar durează atât. Dacă a eșuat, se reia cu: `cd proxmox/lxc171-claude-agent/maria-whatsapp-bridge/rag && MARIA_BRIDGE_DIR=$HOME/.maria-bridge ~/.maria-bridge/venv/bin/python sync.py --force` ## 3. Ce s-a făcut azi ### Git și Gitea - **`romfast/workspace` dădea 500** de pe 2026-04-06: patru gitlink-uri fără `.gitmodules` făceau Gitea 1.24.3 să dea panic pe listarea rădăcinii. Scoase din index. **Nu era vina botului**, cum se bănuia inițial. - **`/workspace/claude-agent` e acum repo propriu** (`git@gitea.romfast.ro:romfast/claude-agent.git`), scos din repo-ul `workspace` unde fusese comis din greșeală. ### Memorie și mod de lucru al botului Discord - `~/.claude/projects/-workspace-claude-agent/memory` e **symlink** către memoria lui `-workspace-romfastsql`. Firele Discord porneau amnezice fiindcă memoria e per director de proiect. Copia veche: `memory.bak-2026-08-31`. - **Regula nouă:** orice cerere de dezvoltare → citește `claude-agent/TODO.md`, planifică cu `Agent(subagent_type: "Plan", model: "opus")`, execută pe Sonnet, actualizează `TODO.md`. Scrisă în `claude-agent/CLAUDE.md` + `claude-agent/docs/flux-dezvoltare.md`. Testată pe sesiuni reale: prima versiune era prea blândă și agentul sărea peste plan la sarcini mici — întărită explicit cu „mărimea nu e criteriu". - **`claude-agent/TODO.md`** e registrul viu al funcționalităților. Nimic blocat acum. ### Puntea Discord — atașamente Imagini (png/jpeg/gif/webp, max 4, max 3,5 MB brut) → blocuri `image`; fișiere text → inserate în prompt (max 4, trunchiate la 100 KB); restul doar numite. Merge și mid-tur ca steering. 31 de teste noi; suita: 426 pass. ### Maria — mutare completă pe LXC 171 - **Sincronizare Drive** prin `rclone authorize` (fără cont de serviciu). Procedura completă: [`docs/rclone-google-drive-headless.md`](docs/rclone-google-drive-headless.md). Script: `maria-whatsapp-bridge/ops/setup-drive.sh`. - **`.xml` acceptat și preferat peste `.md`** la același nume de bază; chunking per problemă (un `` = un chunk, cu mesajul și rezolvarea împreună). - **Lacăt `flock` între reindexări** + scriere atomică a indexului. Descoperit când timer-ul a pornit peste o rulare manuală și două procese scriau același fișier. - **Fix LID**: după asociere nu răspundea nimic. WhatsApp livrează self-chat-ul ca `51947713372214@lid`, iar filtrul compara doar cu `@s.whatsapp.net` — arunca tot, tăcut. Reparat; mesajele respinse se loghează acum cu motivul. - 26 de teste noi (prima suită a proiectului Maria). ### Documentație - **[`docs/chatboti-si-punti.md`](docs/chatboti-si-punti.md)** — care chatbot e care. Trei lucruri numite „Maria", doi boți pe Discord, două punți WhatsApp pe **același număr**. A costat o oră de diagnostic azi: Maria răspundea de pe LXC 104, iar toate verificările se făceau pe 171. - **[`proxmox/lxc301-docker-template/README.md`](proxmox/lxc301-docker-template/README.md)** — singurul guest nedocumentat. E un template Proxmox, nu un container oprit. ## 4. Ce a rămas de făcut ### a) LXC 301 — nimic urgent (corectat 2026-08-31) Versiunea inițială a acestei secțiuni descria un conflict de IP activ cu VM 109. **Greșit:** 301 e marcat `template: 1`, deci nu poate fi pornit deloc și `onboot: 1` e ignorat. Nu revendică 10.0.20.37 la reboot-ul lui pveelite, deci `pct set 301 -onboot 0` nu e necesar. Verificat tot atunci: `basevol-301-disk-0@__base__` nu are niciun clon, deci `pct destroy 301` ar fi sigur (~916 MB pe local-zfs). Opțional, la decizia utilizatorului — nu e urgent. Singurul caz în care IP-ul redevine o problemă: dacă cineva convertește template-ul înapoi în container. Atunci `-onboot 0` sau alt IP **înainte** de pornire. ### b) Auditul de infrastructură, dacă se dorește Coverage-ul e bun — LXC 301 era singurul guest fără pagină proprie. Ce **nu** s-a făcut: verificarea sistematică a fiecărui README existent față de starea live. Divergențele găsite azi (prototipul Maria pe 104, LLM-ul pe 8091, Gitea rupt de 5 luni) au ieșit la iveală accidental, nu dintr-un audit. ### c) Model de răspuns al Mariei Rămâne `Qwen3.5-2B-Q4` pe LXC 104 — decizia utilizatorului a fost „păstrez deocamdată, cu RAG-ul complet". Răspunsurile factuale (e-Factura) sunt acum corecte și ancorate în documente; cele explicative sunt încă vagi. De reevaluat după câteva întrebări reale. ## 5. Capcane de reținut - **Verifică întâi pe ce container ești.** `8099` și `11434` există și pe 104 și pe 171, cu conținut diferit. Nu repeta ora pierdută azi. - **Nu reporni prototipul de pe 104.** Ar răspunde în paralel, pe același număr, cu un index de 24 de chunk-uri. - **`rclone sync` e distructiv pe destinație.** Depozitul Mariei e oglindă a Drive-ului; un document adăugat manual din dashboard dispare la următoarea sincronizare. - **Maria nu are voie la infrastructură** — e chatbot pentru clienții ERP ROA. Nimic din `proxmox/`, niciun IP sau credențial în depozitul ei. Regula e în `claude-agent/CLAUDE.md`. - **Nu tăia ieșirea comenzilor de diagnostic cu `head`.** Concluzia „nu ascultă nimic pe 8091" a fost greșită exact din cauza asta și a trimis diagnosticul pe pistă falsă. ## 6. Comiteri `ROMFASTSQL`: `b29b9f2..824b215` (14 comiteri) · `claude-agent`: `6d0bfe1..c97ba0c` (9 comiteri) · `workspace`: `d24dca3`. Toate împinse pe gitea.romfast.ro.