PROGRESS: predare inainte de modulul 5

Fluxul complet pentru un modul nou (download, extract_audio, transcribe,
sumarizare, verificare, render), capcanele cozilor, si cine ce agent e.
17_STRATEGII ramane terminat; deschise doar cele doua intrebari pentru user.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ThN7ixZrowca8aTGrK1MUJ
This commit is contained in:
Claude Agent
2026-10-01 19:45:08 +00:00
parent 119b611fca
commit 43236af73e

View File

@@ -1,4 +1,109 @@
# Progres — atm-curs-dl (actualizat 2026-09-22, 20:30 UTC) # Progres — atm-curs-dl (actualizat 2026-10-01)
---
# PREDARE 01.10.2026 — URMEAZA MODULUL 5
Userul a primit acces la **modulul 5** si vrea sa fie prelucrat. **Nu e nimic
pe disc inca** (`summaries/` si `transcripts/` au 01, 02, 03, 04 = M1, M2, M3,
M4, plus catalizatori, analiza zilnica, Q&A, analiza fundamentala).
**Repo curat, pushat, nimic nu ruleaza.** Ultimul commit: `119b611`.
## Primul lucru de facut la reluare
Intreaba userul **ce anume are**: acces in cont (atunci descarcarea e
automata), sau fisiere pe care le-a pus undeva pe disc. Fluxul difera.
## Fluxul complet pentru un modul nou, in ordine
**Pasii 1-3 nu au nevoie de niciun model.** Sunt scripturi; un agent pus sa le
supravegheze adauga doar cost si moduri noi de esec. Lanseaza-le detasat si
asteapta-le cu monitorul, nu cu polling.
1. **`python download.py`** — ia videourile prin API-ul systeme.io. Cere
`.env` cu `ATM_EMAIL` / `ATM_PASSWORD`. Reluabil (Range + `videos/manifest.json`).
**De sarit, de obicei:** pasul 2 nu are nevoie de video pe disc.
2. **`python extract_audio.py`** — ffmpeg citeste MP4-ul direct de pe
CloudFront si scrie doar pista audio (mono 16 kHz) in `audio/<modul>/`.
Niciun video nu atinge discul. Reluabil prin existenta fisierului.
3. **`python transcribe.py`** — `audio/<modul>/*.mp3` → `transcripts/<modul>/*.txt`
cu faster-whisper pe CPU. **Sterge audio-ul dupa transcriere reusita.**
Reluabil: sare peste lectiile care au deja transcriere.
- **`python extract_text_lessons.py`** — lectiile FARA video (text/quiz), pe
care `extract_audio.py` le sare. Scrie in acelasi loc, ca sa intre in
acelasi flux.
- Daca o parte din coada merge pe moltbot: **`./pull_moltbot.sh <dest>`**,
niciodata `scp` + `find -size -1k -delete` (a sters o data o transcriere
de sub procesul care o scria, iar audio-ul era deja sters).
4. **Sumarizare, cu agenti opencode**, unul per transcriere. Formatul si
regulile: `STYLE.md`. Agentul existent pentru asta e `recoltor`
(`.opencode/agents/recoltor.md`).
5. **Verificare, cu agenti separati de cei care au scris.** Pasul asta nu se
sare niciodata — vezi sectiunea de mai jos, „de ce".
6. **`.venv/bin/python render_html.py`** (NU `python3` — `markdown` nu e in
python-ul de sistem).
## Doua capcane ale cozilor, platite deja
- **`transcribe.py` creeaza fisierul `.txt` gol la start.** Un `git add` pe
folderul de transcrieri in timpul cozii comite un stub de 0 octeti, iar un
agent lansat pe el raporteaza „nimic de recoltat". Ruleaza
`find transcripts -size 0` inainte de commit **si** inainte sa dai un fisier
unui agent.
- **`pgrep -f <ceva>` intr-un wrapper de shell se prinde pe el insusi** —
o coada a stat degeaba doua ore asa. Scrie `pgrep -f "[a]udio_fingerprint"`,
sau asteapta pe un PID.
- Inainte de transcriere, `audio_fingerprint.py` prinde duplicatele de sesiune
**pe audio**, deci inainte sa platesti transcrierea. Validat: 1.000 pe
duplicat, 0.038 pe sesiuni diferite.
## Starea lui `17_STRATEGII` — TERMINAT, nu-l redeschide fara motiv
Toate cele 8 capitole: text nou dupa sablon, diagrame complete, **verificate si
reparate** (47 de probleme, 22.09). Cele 92 de diagrame ies curate la
`audit_diagrams.py`. Nimic in lucru.
**Singurele doua lucruri deschise, amandoua intrebari pentru user:**
1. `00_harta.md` si `00_SHORTLIST.md` mai au `fisier:linie` in corp — intra si
ele in regula sablonului? Nu sunt capitole (unul e cuprins, altul clasament).
2. Anexele `A1_risc`, `A2_contradictii`, `A3_intrarea` se reconstruiesc dupa
sablon? Nu sunt strategii.
## Agentii opencode, cine pe ce
Cheia userului din 22.09 e in `~/.local/share/opencode/auth.json` (cea veche,
cu limita lunara atinsa, e `auth.json.bak`). 24 de rulari fara eroare de cota.
| Agent | Domeniu |
|---|---|
| `recoltor` | citit o transcriere si scos regulile |
| `redactor`, `corector`, `verificator` | documentele din `08_ANALIZA_ZILNICA`, prin `triaj/DECIZII.md` |
| `verif_strat` | verifica un capitol din `17_STRATEGII`, categoriile A-F, `edit: deny` |
| `corector_strat` | aplica o lista numerotata de reparatii data in prompt |
| `grafician` | deseneaza o diagrama noua, dintr-un `.spec.txt` |
| `reparator_grafic` | repara un generator existent; n-are voie la niciun `.md` |
| `unealta` | repara o unealta Python din radacina; lasa in urma `--selftest` |
**Impartirea de permisiuni care face ca trei agenti sa lucreze pe acelasi
capitol fara sa se calce:** verificatorul nu scrie deloc; corectorul nu atinge
`gen/` si nici blocurile `<svg>` din `.md`; reparatorul de grafic nu atinge
niciun `.md` si nu ruleaza `substituie.py`. Pipeline-ul (`substituie.py`, apoi
`render_html.py`) il rulezi **tu**, o data, la final. Comiti tot tu, pe cai.
## De ce verificarea nu se sare, pe scurt
Pe 22.09, cinci verificatori au gasit 47 de probleme in capitole care pareau
gata. Tiparul cel mai valoros, prins independent la **trei** capitole: **cifre
ilustrative dintr-un SVG de sumar, promovate la „cifrele cursului"**. Testul e
ieftin — `grep -n "<cifra>" transcripts/.../<fisier>.txt`; daca transcrierea
n-o rosteste, documentul n-are voie sa spuna ca e a cursului. **Aplica-l de la
inceput la modulul 5**, nu dupa.
Celelalte doua tipare care se repeta: **contradictia fabricata** (documentul
zice „materialul nu e clar aici" pe un lucru pe care sursa il spune explicit —
verifica fiecare intrare din sectiunea de contradictii in sursa) si **eticheta
ramasa in urma desenului** (o fraza adevarata despre o versiune veche a
diagramei).
--- ---