Files
atm-curs-dl/PROGRESS.md

32 KiB
Raw Blame History

Progres — atm-curs-dl (actualizat 2026-09-14, 06:00 UTC — valul 2 in lucru)

Pipeline personal de transcriere + sumarizare pentru cursul de trading ATM (Bogdan Jinga, systeme.io), cont cu acces parțial. Repo: romfast/atm-curs-dl pe Gitea. Pagină publicată (Tailscale, doar în tailnet): https://claude-agent.tailf7372d.ts.net/atm/index.html


CE E DE FĂCUT ACUM (citește asta prima)

0-bis. STAREA DE LA 14.09.2026, 06:00 (citeste asta inaintea punctului 0)

Comise azi: 04, 05. Deci 5 documente din 9 sunt gata: 01 buy doji, 02 MBT-10, 03 locul crimei, 04 pivoti (01c2018, 11 diagrame), 05 volum (60cd378, 11 diagrame).

In lucru chiar acum: az06fin (layout-ul lui 06_structura, 17 diagrame, text gata si audit 0, dar reparatiile vizuale neaplicate), plus valul 2: az07 context de piata, az08 executie si risc, az09 earnings si optiuni. Niciunul nu comite; comiti tu, pe fisierele lui, dupa raport.

Ce s-a invatat azi despre bugetul de context al agentilor. Toti trei agentii din valul 1 au atins pragul de 250k pe un singur document si au ramas fara context exact la reparatul etichetelor. Doua cauze, amandoua evitabile:

  1. citeau toate cele 11 fisiere din harvest/ integral - corect e grep -n pe termenii subiectului, apoi doar secțiunile gasite;
  2. reparau layout-ul la final, diagrama cu diagrama.

Rezolvarea pentru 2 exista si e testata: clasa PChart din gen/az_pivoti.py - etichetele nivelurilor in marginea din dreapta dupa ultima candela, doua etichete apropiate se imping automat cu 14px, latimea calculata din cea mai lunga eticheta, 24px deasupra celui mai sus pret. Foloseste _y/_cx din svg_candles, deci nicio coordonata scrisa de mana. Pune-o in promptul fiecarui agent nou, cu „porneste cu ea, nu repara la final". Agentii din valul 2 au primit-o deja.

Trei capcane de generator, pățite azi:

  • Level(p, text, color, "left") pune „left" in dash, nu in label_at - toate etichetele ies in dreapta si nimic nu semnaleaza greseala. Merita o garda in svg_candles.py care sa crape pe un dash necunoscut, in spiritul gardelor din render_html.py si transcribe.py. Nu e pusa inca - am amanat-o ca sa nu schimb unealta sub mana agentilor care ruleaza.
  • Un script global de inlocuiri pentru layout a crapat pe assert inainte sa scrie nimic, la doi agenti, pentru ca rep() se potrivea in doua locuri. Editeaza bloc cu bloc, ancorat unic.
  • O reparatie de suprapunere a mutat eticheta „breakout cu volum" cu doua bare la stanga barei reale. O suprapunere devenita eroare de continut, mai grava decat ce a reparat. Cand muti o eticheta, confirma pe screenshot ca inca indica bara corecta.

grep -c "SVG:" = numarul de diagrame e CORECT, nu o eroare. Marcatorii <!--SVG:nume-->…<!--/SVG--> rămân in fisier ca delimitatori, exact ca in modelul 01, ca sa se poata re-rula generatorul. Verificarea corecta e ca fiecare marcator e urmat de <svg: grep -A1 '<!--SVG:' <fisier>.md | grep -c '<svg'. Instructiunea „grep -c SVG: trebuie 0" din promptul meu initial era greșita si trei agenti au raportat-o ca abatere.

Datorie notata, de dat agentului de verificare al valului 1 (lista e in scratchpad-ul sesiunii, de_verificat.md):

  • 05_volum svg7: „breakout cu volum" ancorat la doua bare la stanga barei de breakout reale (comis asa in 60cd378);
  • 05_volum: „volumul conduce pretul" nu e o regula pe care o spune el, e construita din trei remarci (19.08, 17.08, 04.09) - verifica sa nu fie prezentata mai tare decat sursele;
  • 04_pivoti D10: eticheta „HL" (bara 22) sta sub linia pivotului Q2, desi candela e deasupra ei (comis in 01c2018);
  • 04_pivoti D8: „hammer" e departe de candela lui, langa eticheta panoului de volum;
  • 04_pivoti: „pivot + 2" (10.09) si „proiectie neutra" (03.09) sunt neconfirmate, marcate ca atare in document.

Investopedia e blocata din container - WebSearch si accesul direct nu merg pentru verificarea linkurilor. Agentii pun doar linkuri deja folosite in repo. Nu le cere mai multe referinte externe.

Ce a rămas dupa valul 2: agentul de verificare pe 04/05/06 (separat de cei care le-au scris), apoi 10_sinteza.md, apoi render_html.py complet + INDEX_TEMATIC.md + verificatorul de linkuri interne.


0. PORNEȘTE DE AICI (14.09.2026 — predare, userul a aprobat formatul)

Tot ce e făcut e comis și pushat. Niciun agent nu rulează. În fundal merge doar coada de transcriere (tmux az_q), tăcut, fără monitor.

Decizia userului, 14.09.2026

  1. Formatul documentelor de strategie e APROBAT — modelul e summaries/08_ANALIZA_ZILNICA/01_buy_doji_si_strategia_mici.md + generatorul lui gen/az_buy_doji_mici.py. Nu-l schimba.
  2. Se scriu TOATE cele 6 documente rămase.
  3. Accentul e pe desen: „vreau exemplele și grafice și diagrame și setup-uri cât mai clar desenate". Deci mai multe diagrame, nu mai puține; fiecare setup desenat, nu doar descris; DA și NU desenate amândouă.
  4. La final: un document de sinteză peste toate — cum se leagă strategiile între ele.
  5. Recoltarea e închisă (saturație). Transcrierile rămase sunt material de exemple, nu sursă de reguli noi.

DE FĂCUT, în ordine

Pas 1 — șase documente, câte un agent fiecare. Lansează-i în valuri de 2-3, nu pe toți odată (panourile tmux se termină peste ~10 agenți).

Fișier de scris Generator Subiect
04_pivoti_si_proiectii.md gen/az_pivoti.py pivot monthly / quarterly / anual, pivot+2, proiecție bull / bear / neutră, „inside" = compresie, pivoți divergenți = trading range, scărița HH/HL pe pivoți, reject pe pivot
05_volum.md gen/az_volum.py volum „țeavă" = instituțional, acumulare vs. distribuție, divergența de volum la al doilea picior, volumul care conduce prețul (breakout de volum înaintea celui de preț), breakout fără volum = eșec, volum monthly vs. weekly, alegerea simbolului din sector după volum
06_structura_trend.md gen/az_structura.py swing low / swing high, confirmarea prin lumânarea din dreapta, higher low, double bottom (al doilea picior mai sus / mai jos), double top, cup & handle (fractal W/D, trigger în mâner), wedge / triunghi, island top, triple doji, inverted H&S, bull flag vs. double bottom
07_context_de_piata.md gen/az_context.py breadth pe SMA 10/20/50/200, McClellan (zero line, oversold, divergență), AAII cu pragul de 15-25%, Fear & Greed, VIX citit invers, ATR% în spike vs. cădere liberă, COT, advance/decline, bond-uri / TLT ca semnal inter-market, RSP ca verificare de top, calendar macro (CPI, PPI, NFP vs. ADP, JOLTS, ISM, Fed, Jackson Hole)
08_executie_si_risc.md gen/az_executie.py risc fix 25 $ la 1:4 și aritmetica lui, tranșe de 1/4 la simboluri scumpe, break-even, ținte în trepte (R1 → R2 → vârf anterior → SMA200 → 1/2 marubozu → fost suport), ținta realistă de 1/2 din distanță, TP1/TP2/trail pe trei poziții, reintrare după stop cu același risc, eșantion de 20-30 de tranzacții
09_earnings_si_optiuni.md gen/az_earnings.py earnings = gamble trade, raportul call/put 3-4x ca bias, butterfly / condor când volatilitatea e mare, gap-ul de earnings ca țintă de pullback, căderea pe rezultate bune, pattern-ul pre-earnings (dat de el cu rezervă)

Promptul care a funcționat (copiază-l, schimbă doar fișierul și subiectul): model = documentul 01 + generatorul lui, citite integral înainte; sursele = tot din harvest/ (11 fișiere) + STYLE.md integral; diagrame numai cu svg_candles.py, serie continuă 25-45 de bare, gap=15-18, body_w=9-10, etichete ancorate cu Mark, title="Exemplu construit (fără ticker) — <tf>", assert pe fiecare nivel afirmat în text, generatorul substituie singur în .md între marcatori; verificare în sarcina lui: audit_diagrams.py = 0, render, screenshot citit efectiv pe fiecare diagramă, reparat, re-verificat; fără commit, fără sub-agenți, fără cereri de aprobare, prag de context 250k, raport scurt către team-lead. Screenshot: serverul de pe 8137 din summaries/; script gata făcut în /tmp/claude-1000/-workspace-atm-curs-dl/1ff6c732-8272-4053-acc1-ecf986f27ab0/scratchpad/shot.mjs (dacă a dispărut, sunt copii în alte scratchpad-uri din /tmp/claude-1000/).

Pas 2 — verificare cu agent separat. După fiecare val, un agent care NU a scris documentele le verifică față de harvest/ (cifre, citate, geometria diagramelor recalculată de mână, contradicții). Pe 13.09.2026 metoda asta a găsit 14 probleme reale în Q&A.

Pas 3 — documentul de sinteză, cerut explicit de user: 10_sinteza.md. Nu un rezumat al celor 9, ci cum se leagă: grila lui de decizie în ordinea în care o aplică (context de piață → structură → trigger → volum → pivot → MBT-10 → execuție), ce confirmă ce, ce se contrazice, și o listă de verificare pentru un setup complet. Merită 2-3 diagrame proprii, cu un setup dus de la context până la ieșire.

Comite pe foldere, după raport. Niciodată git add -A cât lucrează agenții. Transcrierile se adaugă filtrat: find transcripts -name '*.txt' -size +0 -print0 | xargs -0 git add (altfel prinzi stub-uri de 0 bytes).

Întrebare rămasă pentru user

„PAM / PPAM" — apare ca nivel de suport în patru zile diferite, lângă pivotul monthly, și n-a putut fi identificat din transcrieri. Userul n-a răspuns încă.


Q&A E TERMINAT — 27 din 27 de sesiuni

Verificate față de transcrieri, până acum: 09.12, 14.10, 23.09, 25.11, 08.09, 04.08, 29.07, 15.07, 08.07, 28.05, 27.05. Rămân neverificate cele 15 sumarizări mai vechi și cele 53 de lecții din module, care au trecut doar prin auditul mecanic.

Regulă de conținut stabilită pe 13.09.2026: o diagramă cu prețuri construite NU poartă ticker real — titlul e „Exemplu construit (fără ticker) — ". Ticker real doar când desenezi nivelurile reale din transcriere, și atunci legenda spune explicit ce e al lui și ce e construit.

Navigare în pagini, făcută pe 13.09.2026: breadcrumb sus și înainte/înapoi jos, generate din render_html.py, nu din conținut. render_file() merge în continuare apelat pe un singur fișier — vecinii vin dintr-un glob pe folder. short_title() taie prefixul de modul, ca să nu se repete în bară și în index.

Dashboard Echo (moltbot): are acum o intrare „ATM" în meniu, spre https://claude-agent.tailf7372d.ts.net/atm/. Meniul e într-un singur loc, constanta NAV_HTML din dashboard/api.py, injectată la servire. Modificarea nu e comisă în repo-ul echo-core — acolo erau deja modificări necomise ale altcuiva. Serviciul echo-taskboard a fost repornit, cu acordul userului.

1. Sumarizări Q&A — TERMINATE, 27 din 27

Gata de sumarizat imediat: niciuna — cele trei rămase (25, 26, 28) își așteaptă transcrierea, vezi punctul 2.

02_18082026 NU se sumarizează — e duplicatul lui 03_11082026. Pe 13.09.2026 sumarizate: 09, 15, 18, 11, 19, 22, 23, 24, 27. 22_04082025 are doar 5 minute de înregistrare — fișierul e scurt intenționat.

De verificat când vine 28_27052025: e din 27.05.2025, la o zi de 27_28052025, și durează cam la fel (~35 min). Rulează check_duplicates.py pe text — audio-ul lui 27 nu mai există local, deci audio_fingerprint.py nu se poate folosi. Sesiunea din 28.05 e despre overnight pe prop, buy the dip pe M2D, planul de calificare și ATMI.

Cum se face o sumarizare — procedura exactă, urmată la toate cele 15:

  1. Citește STYLE.md integral dacă n-ai făcut-o în sesiunea asta.
  2. Citește transcrierea selectiv, pe bucăți de ~200 de linii (sed -n '1,200p'), nu integral — sunt 20-35 mii de cuvinte fiecare.
  3. Scrie fișierul în summaries/09_QA/<NN>_<AAAA-LL-ZZ>.md. Numele vine din transcriere: 13_28102025.txt → 13_2025-10-28.md.
  4. Folosește unealta de scriere (Write), nu heredoc-uri în Bash — userul a cerut asta explicit, pentru că heredoc-ul tipărește tot fișierul în terminalul lui. Pentru corecturi mici (mutat o etichetă, schimbat un preț) sed e în regulă.
  5. Pentru diagrame cu candele sau cu entry/SL/TP: generează-le cu svg_candles.py, nu le desena de mână. Vezi gen/patternuri_candele.py ca exemplu de folosire. Capcană (pățită pe 13.09.2026): nu e destul să rulezi generatorul — trebuie să lipești exact output-ul lui în .md. Am scris o dată SVG-ul „după" generator, din memorie, și candelele au ieșit sub linia de pivot deși prețurile spuneau altceva. audit_diagrams.py nu prinde asta. Scrie fișierul cu marcatori <!--SVG:nume--> și substituie-i cu un script din output-ul generatorului.
  6. .venv/bin/python audit_diagrams.py summaries/09_QA/<fisier>.md → trebuie să iasă 0 probleme.
  7. Randează doar fișierul tău: .venv/bin/python -c "from render_html import render_file; from pathlib import Path; render_file(Path('summaries/09_QA/<fisier>.md'))"
  8. Screenshot pe fiecare SVG și citește-le efectiv (Read pe .png). Auditul mecanic nu vede text care stă peste o linie de preț. node <scratchpad>/shot.mjs http://localhost:8137/09_QA/<fisier>.html <dir> (serverul local rulează pe portul 8137, din summaries/; dacă a murit: cd summaries && nohup python3 -m http.server 8137 &)
  9. Adaugă intrările în summaries/09_QA/INDEX_TEMATIC.md, pe secțiuni. Verifică ancorele — headingurile cu MP² dau slug mp2-..., nu mp-..., și am ratat asta de două ori.
  10. .venv/bin/python render_html.py (regenerează tot + index.html), apoi verifică link-urile interne (scriptul e mai jos), apoi commit + push.

Verificarea link-urilor interne (rulează înainte de fiecare commit):

import re, pathlib
bad = []
for f in pathlib.Path("summaries").glob("*/*.html"):
    for page, anch in re.findall(r'href="([\w.-]+)\.html#([^"]+)"', f.read_text()):
        t = f.parent / f"{page}.html"
        if not t.exists() or anch not in set(re.findall(r'id="([^"]+)"', t.read_text())):
            bad.append(f"{f.name} -> {page}#{anch}")
print("link-uri rupte:", bad or "niciunul")

Verificare cu agenți — merită, găsește ce auditul nu vede. Pe 13.09.2026 am pus trei agenți să verifice șase sumarizări față de transcrieri. Au găsit lucruri pe care audit_diagrams.py nu le prinde niciodată:

  • etichete de R calculate greșit (2.1R în loc de 2.03R) pe diagrame cu scara corectă;
  • cifre atribuite lui care nu existau în transcriere, sau care erau ale lui dar cu alt sens (107 era prețul curent, nu vârful);
  • stop-uri etichetate cu un procent care nu corespundea nivelului desenat (78.20 marcat ca −9%, când era −12.6%);
  • contradicții între două secțiuni ale aceluiași fișier. Prompt care a funcționat: dă-i agentului fișierul + transcrierea, cere-i să verifice pe categorii (cifre, citate, secțiunea de completări, geometria diagramelor recalculată de mână, contradicții), spune-i explicit că auditul nu prinde erorile de scară, și cere raport scurt, doar cu probleme + dovezi.

Atenție la un eșec tăcut: dacă scriptul care actualizează INDEX_TEMATIC.md crapă (o ghilimea neescapată într-un titlu), verificatorul de link-uri raportează „niciunul" — pentru că link-urile nici n-au ajuns în fișier. Confirmă cu grep -c "<data>" INDEX_TEMATIC.md.

2. Transcrieri în curs — NU le opri

Local: tmux qa_local3, lucrează la 25_08072025 (2h de audio, pornit la 08:26 UTC, gata pe la 09:25). Mai are după el: 26_11062025 (~2.9h de audio, gata pe la 10:50) și 28_27052025 (~35 min, gata pe la 11:10). Log: transcribe_qa_local.log. Viteză măsurată: 0.49x durata audio. Un monitor în sesiune raportează când termină fiecare fișier.

moltbot: a terminat tot. Ultima lui, 27_28052025, e adusă și sumarizată. Nu mai are coadă. Dacă vrei să-l refolosești, pornește cu tmux new-session -d -s qa_molt "/root/atm/run.sh", nu cu workerul direct.

Cum aduci transcrierile de pe moltbot: ./pull_moltbot.sh NU folosi scp + find -size -1k -delete (vezi incidentul de mai jos).

Când termină amândouă, mai rămân de transcris: nimic. Toate cele 28 de lecții Q&A vor avea transcriere.

3. După Q&A — ordinea confirmată cu userul

  1. Cele 6 lecții 1:1 — BLOCATE, verificat pe 13.09.2026. Modulele 1:1 DANIEL R, MG, IM, LC, DR, AP au câte o lecție fiecare, dar API-ul răspunde la toate șase cu 403 {"reason":"purchase_required"} (verificat pe cererea directă, nu doar din log). Trec la „Blocat de acces": 28 + 6 = 34 de lecții blocate. Dacă userul primește acces, se reia cu extract_audio.py --only "<modul>" pentru fiecare.

  2. Analiza Zilnică (147 lecții). Userul vrea un sample separat pe un fișier, ca să aprobe un template, înainte de orice procesare în masă. Nu porni fără asta. Rulează audio_fingerprint.py pe toate ÎNAINTE de transcriere — acolo un duplicat costă ore.

    Sample descărcat pe 13.09.2026: audio/08_ANALIZĂ_ZILNICĂ/01_10092026.mp3, 27:57 min, 12.8 MB, păstrat pe disc (--keep-audio) pentru fingerprint. Transcrierea a pornit la 16:36 în tmux az1, log transcribe_az_sample.log, rezultat în transcripts/08_ANALIZĂ_ZILNICĂ/01_10092026.txt.

    Atenție la ordine: modulul e listat de la cel mai NOU la cel mai vechi, deci „prima lecție" e din 10.09.2026, nu cea mai veche. --lectures N ia primele N, adică cele mai recente.

    Capcană: rulează transcribe.py cu --only 08_ANALIZĂ_ZILNICĂ. Fără --only ia tot ce găsește în audio/, inclusiv cele 19 mp3 rămase în audio/09_Q_and_A*. Și folosește .venv/bin/python — python3 din sistem n-are faster_whisper.


STATUS

Curriculum de bază: 53/53 lecții accesibile — complet

Modul Lecții Status
Modulul 1 10 ✅
Catalizatori economici 8 ✅
Modulul 2 16 ✅
Modulul 3 6 (5 video + 1 text) ✅
Modulul 4 4 ✅
Analiză Fundamentală 9 ✅

Q&A: 27 din 27 sumarizate, 28 din 28 transcrise — COMPLET

Sumarizate: 25.08, 11.08, 04.08, 28.07, 28.04, 19.02, 20.01.2026, 09.12, 02.12, 25.11, 18.11, 28.10, 21.10, 14.10, 07.10, 30.09, 23.09, 08.09, 25.08, 18.08, 04.08, 29.07, 15.07, 28.05.2025.

Blocat de acces (purchase_required)

Modul 5 (7), Modul 6 (6), Master ATM 1-4 (15), cele 6 lecții 1:1 (1:1 DANIEL R, MG, IM, LC, DR, AP) = 34 de lecții. Dacă userul primește acces: extract_audio.py → transcribe.py → sumarizare.

Neatins, decis cu userul

Rezultate Clienți Mentorat (3), Live Trading Room (5).


CUM SE LUCREAZĂ (citește CLAUDE.md din repo)

Userul a cerut pe 13.09.2026, explicit: sesiunea principală e doar orchestrator. Nu citi tu transcrieri întregi, nu converti tu diagrame în serie, nu căuta tu prin tot repo-ul — lansează agenți și citește rapoartele. Regulile complete, inclusiv ce se pune în promptul fiecărui agent, sunt în CLAUDE.md.

Prag de context: 250k. Un hook (.claude/hooks/context_guard.py) anunță când s-a depășit. Atunci: salvezi PROGRESS.md, comiți, închizi agenții terminați, predai sesiunea. Aceeași instrucțiune se pune și în promptul agenților.

DIAGRAME: standardul nou (cerut de user pe 13.09.2026)

Userul citește diagramele ca să vadă trendul și să facă analogie cu un grafic real din TradingView. Candelele izolate cu spații mari între ele nu arată ca un grafic. Regula completă e în STYLE.md, secțiunea „Cum trebuie să arate un grafic de preț"; pe scurt:

  • serie continuă de 25-45 de bare (gap=15-18, body_w=9-10), cu open-ul fiecărei bare = close-ul precedentei;
  • panou de volum (vol_h=70) când textul vorbește despre volum;
  • medie mobilă (mas=[MA(20, ...)]) când vorbește despre trend/SMA;
  • etichete ancorate pe candele cu marks=[Mark(i, ...)], nu tag per candelă; title="SIMBOL — timeframe" sus;
  • assert în generator pe fiecare nivel afirmat în text.

Stilul vechi (3-6 candele izolate) rămâne valabil doar pentru definiții de o singură candelă (ce e un doji, ce e un marubozu).

gen/exemplu_grafic_real.py e referința de copiat. svg_candles.py are acum from_closes() (controlezi structura exact din close-uri), walk(), panou de volum, MA, Mark, title și Level.label_at.

Ce s-a convertit pe 13.09.2026: ~215 diagrame, tot materialul — 8 fișiere Q&A plus Modulele 1-4, Catalizatori și Analiză Fundamentală. Neconvertite deliberat, cu motiv tehnic: pivoții în trepte de la MP², TICUS de la MBP (generatorul n-are panou de indicator cu benzi Bollinger), diagrama FTNT cu RSI+Stochastic, barele de order flow, locatoarele mici și schemele conceptuale.

VERIFICARE CU AGENȚI (merită, găsește ce auditul nu vede)

Pe 13.09.2026 trei agenți au verificat șase sumarizări față de transcrieri și au găsit 14 probleme reale pe care audit_diagrams.py nu le prinde niciodată: etichete de R calculate greșit pe diagrame cu scara corectă, cifre atribuite lui care nu existau în transcriere, un stop etichetat −9% care era de fapt −12.6%, o intrare short descrisă sub un low pe care desenul îl punea deasupra, și contradicții între două secțiuni ale aceluiași fișier.

Prompt care a funcționat: dă-i agentului fișierul + transcrierea, cere-i să verifice pe categorii (A cifre atribuite lui, B citate, C secțiunea de completări, D geometria diagramelor recalculată de mână, E contradicții interne, F referințe), spune-i explicit că auditul nu prinde erorile de scară, și cere raport scurt: doar probleme, cu dovezi, „ok" pe categoriile curate.

Capcane de orchestrare, pățite:

  • transcribe.py creează fișierul .txt gol la start. Un git add pe folderul de transcrieri în timpul cozii comite un stub de 0 bytes (pățit pe 13.09.2026, commit 75d403c cu 04_03092026.txt gol), iar un agent lansat pe el raportează „nimic de recoltat". Verifică find transcripts -size 0 înainte de commit și înainte să dai un fișier unui agent.

  • pgrep -f <ceva> într-un wrapper de shell se prinde pe el însuși. Pe 13.09.2026 un while pgrep -f audio_fingerprint; do sleep 30; done lansat prin Bash n-a ieșit niciodată: linia de comandă a shell-ului care rula bucla conține chiar șirul căutat, deci pgrep se găsea pe sine. Coada de transcriere a stat degeaba ~2 ore. Scrie tiparul cu paranteză: pgrep -f "[a]udio_fingerprint", sau așteaptă pe un PID.

  • Nu da git add -A cât timp agenții lucrează. Am comis de două ori munca în zbor a altui agent. Comite doar folderele agenților care au raportat că au terminat.

  • Panourile tmux se termină: peste ~10 agenți concurenți, Agent dă „no space for new pane". Închide-i pe cei care au terminat, cu SendMessage {"type": "shutdown_request"}.

  • Un agent poate lansa la rândul lui un sub-agent care scrie în aceleași fișiere. Verifică ce e în repo, nu ce spune raportul.

  • Un agent poate sta blocat pe o aprobare care nu ajunge la tine. Pe 13.09.2026 sum26 a stat două ore în „Waiting for team lead approval", iar cererea n-a apărut niciodată în sesiunea principală. Din afară arată identic cu „lucrează": ListAgents îl dă viu, iar mesajele trimise cu SendMessage nu-l deblochează. Semnalul real e că fișierul lui nu se mai schimbă. Diagnostic: tmux list-panes -a -F "#{pane_id} #{pane_title}" apoi tmux capture-pane -p -t %NN. Deblocare: tmux send-keys -t %NN Escape. Pune în promptul fiecărui agent „nu cere aprobări, ai mandat complet pe fișierul tău".

  • Agenții nu pot trimite pe adresa main — le răspunde „main te adresează pe tine". Scrie-le în prompt să raporteze către team-lead. Altfel raportul rămâne pe ecranul lor și nu îl vezi niciodată.

  • Un agent dintr-o sesiune veche poate fi încă viu. Pe 13.09.2026 un agent rămas din sesiunea precedentă (suma-24) scria în summaries/09_QA/24_2025-07-15.md în același timp cu cel lansat de mine. Au ieșit două versiuni diferite ale aceluiași fișier (8 diagrame vs. 4), iar commit-ul meu a prins fișierul la mijlocul scrierii, cu marcatorii <!--SVG:...--> nesubstituiți — deci fără nicio diagramă. Rulează ListAgents ÎNAINTE să lansezi agenți pe un fișier, și verifică grep -c "SVG:" (trebuie 0) înainte de commit.

UNELTE (scrise în sesiunea asta — folosește-le)

Fișier Ce face
svg_candles.py Generează diagrame de candele din prețuri, cu o singură scară px/unitate. Din 13.09.2026: serii continue (from_closes, walk), panou de volum, medii mobile, etichete ancorate. Are selftest.
audit_diagrams.py Verificare mecanică: text tăiat de viewBox, texte suprapuse, linii goale în <svg>, raport preț-vs-pixeli pe diagramele cu 3 niveluri.
check_duplicates.py Duplicate pe transcrieri. Are --selftest.
audio_fingerprint.py Duplicate pe audio, înainte de transcriere. Amprentă = RMS pe ferestre de 1s, corelat peste decalaje. Validat: 1.000 pe duplicat, 0.038 pe sesiuni diferite.
pull_moltbot.sh Aduce transcrierile de pe moltbot în siguranță (staging + mutare doar peste 1KB).
extract_text_lessons.py Lecțiile FĂRĂ video (extract_audio.py le sare).
gen/patternuri_candele.py Regenerează 01_MODUL_1/05_patternuri_candele.md întreg. Diagramele de acolo NU se editează de mână.
gen/exemplu_grafic_real.py Referința pentru stilul „grafic real": serie continuă + volum + SMA + etichete ancorate, cu assert pe structură.

Gărzi adăugate în cod:

  • render_html.py — crapă dacă găsește o linie goală într-un <svg> (rupe blocul HTML tăcut și diagrama se randează pe jumătate).
  • transcribe.py — verifică nr. de cuvinte vs. durata audio înainte ca apelantul să șteargă audio-ul; și sare peste fișierele dispărute între timp.

INCIDENTE ȘI CAPCANE (nu le repeta)

Duplicat în curs

Q&A 18.08.2026 = 11.08.2026, aceeași înregistrare sub două date. Verificat: durată identică, transcrieri 86.5% identice, amprentă audio 1.000. Sumarizată o singură dată, sub 11.08.2026, cu notă în fișier și în index. Scanat tot modulul Q&A: un singur duplicat. Atenție: 13 și 16 diferă cu 0.288s dar sunt sesiuni diferite — verificat prin transcrierea unor felii de 200s.

Transcriere pierdută dintr-un find -delete

Am rulat find transcripts/ -size -1k -delete cât transcribe.py scria în același director. faster_whisper scrie bufferat — o transcriere de o oră stă sub 1KB minute în șir. find a șters fișierul de sub proces, Python a logat „Transcribed" pe un inode dispărut, iar audio-ul a fost șters. Lecția 11 s-a pierdut complet și a trebuit re-descărcată. → Folosește pull_moltbot.sh. Garda din transcribe.py acoperă restul.

moltbot moare fără urmă în loguri

Pe 2026-09-12 la 19:55, procesul python ȘI serverul tmux au dispărut, fără traceback, fără OOM în loguri (containerul nu vede dmesg), fără reboot. Probabil OOM nelogat — 8GB, medium int8. Coada s-a oprit 90 de minute. → cpu_threads scăzut la 4 și /root/atm/run.sh relansează workerul de până la 40 de ori. Pornește cu tmux new-session -d -s qa_molt "/root/atm/run.sh", NU cu workerul direct.

Coada locală oprită de un fișier mutat

transcribe.py își face lista o singură dată la start. Un fișier mutat la rebalansare a oprit toată coada 13 ore mai târziu, cu FileNotFoundError. → Reparat, sare peste fișierele dispărute.

Tailscale SSH expiră

Accesul la moltbot cere reautentificare periodic. Când apare # To authenticate, visit: https://login.tailscale.com/a/..., dă link-ul userului. Workerul de pe moltbot rulează independent de accesul SSH.

A/B pe modele — nu-l repeta

whisper-small-ro-cv11-int8 (fine-tunat RO, există pe moltbot) e inutilizabil: „MP4 short" → „empe patrat şort", „PDF" → „pe-defect". Fine-tunat pe Common Voice (vorbire citită), se rupe pe live Zoom cu jargon englezesc. medium generic câștigă și nu e nici mai lent.


CE A CERUT USERUL EXPLICIT

  • Format Q&A: un fișier per sesiune, structurat pe subiecte cu titluri descriptive (nu pe dată), plus INDEX_TEMATIC.md care adună toate întrebările pe temă. Întrebările administrative se aruncă, cu o linie la final despre câte.
  • Diagrame doar unde adaugă ceva — nu pentru răspunsuri de proces sau psihologie. La intro-uri și workshop-uri NU forța diagrame.
  • Diagramele trebuie să fie proporționale cu textul. Reclamat explicit pe 01_MODUL_1/05_patternuri_candele.md: o țintă de 2R desenată la distanța de 1R. Auditul a găsit același bug în fiecare modul. De aici svg_candles.py și audit_diagrams.py.
  • Fiecare concept are nevoie de: de ce îl urmărești, ce faci când îl vezi, trigger DA/NU, exemplu complet cu intrare/SL/țintă. Nu doar „așa arată, așa se numește".
  • Nu scrie fișiere cu heredoc-uri în Bash — tipărește tot conținutul în terminalul lui.
  • Sample-ul aprobat, referința canonică pentru Q&A: summaries/09_QA/01_2026-08-25.md.
  • Diagramele de preț trebuie să arate ca un grafic real din TradingView — linie continuă de preț și volum, ca să se vadă trendul (cerut pe 13.09.2026). Vezi secțiunea „DIAGRAME: standardul nou".
  • Verificarea se face cu agenți, ca să nu se umple contextul sesiunii principale (cerut pe 13.09.2026).

CE S-A REPARAT ÎN AUDITUL COMPLET (2026-09-12)

6 agenți Sonnet, câte un modul fiecare, plus verificare independentă de mine. audit_diagrams.py: 0 probleme în toate fișierele.

Bug-uri reale găsite, pe lângă cele de layout:

  • Bug de scară în fiecare modul: 4.80R desenat ca 0.91R (divergențe), 1.48R ca 0.47R (PIB), 2.84R ca 1.05R (Power), 6.5x în loc de 1.68x (scanere), proiecție la 60px când referința era 75px (Inverted H&S).
  • Aritmetică: spread scăzut de două ori în money management; „risc 5.90, sub 1:1" când riscul era 1.90 și raportul 1:2.84; tabel Piotroski cu 3 rânduri DA și total declarat 2/9.
  • Conținut: o diferență de $814M numită „rotunjire" (4.7% din total) în contul de profit și pierdere; un bar chart care arăta o valoare negativă ca bară pozitivă; perechea DA/NU de la ATMI desenată cu adâncimi de 2x diferență, deși lecția spune că diferența e invizibilă cu ochiul.
  • Goluri completate: JOLTS n-avea secțiune de tranzacționare, Fed avea doar minuta (nu ziua deciziei de dobândă), MDSRT n-avea de ce/ce faci/DA-NU, R-multiple și portfolio heat lipseau complet.

Lecție de proces: un agent a raportat că a reparat o diagramă — nu o reparase. Verifică rapoartele, nu le lua pe cuvânt.


MODULELE DE PE SITE (nume exacte, listate pe 13.09.2026)

--only compară pe string exact, deci copiază de aici:

# Nume Lecții Stare
1 MODUL 1 10 ✅
2 CATALIZATORI 8 ✅
3 MODUL 2 16 ✅
4 MODUL 3 6 ✅
5 MODUL 4 4 ✅
6 MODUL 5 7 blocat
7 MODUL 6 6 blocat
8 ANALIZĂ ZILNICĂ 147 sample în lucru
9 Q and A 28 ✅ complet
10 REZULTATE CLIENȚI MENTORAT 3 neatins, decis cu userul
11 1:1 DANIEL R 1 blocat
12-15 MASTER ATM 1-4 4+3+5+3 blocat
16 ANALIZĂ FUNDAMENTALĂ 9 ✅
17 MG 1 blocat
18 IM 1 blocat
19 LIVE TRADING ROOM 5 neatins, decis cu userul
20 LC 1 blocat
21 DR 1 blocat
22 AP 1 blocat

FIȘIERE CHEIE

  • download.py / extract_audio.py — login systeme.io + extragere audio direct din URL. --only <modul> ocolește CORE_MODULES; --lectures N limitează.
  • transcribe.py — faster-whisper, CPU, medium, int8.
  • render_html.py — .md → .html, index grupat pe module cu titlurile H1, extensia toc pentru ancore. Rulează după orice modificare.
  • .env — credențiale (gitignored).
  • STYLE.md — regulile de format. Citește-l primul.