diff --git a/PROGRESS.md b/PROGRESS.md
index 6c1717e..61235e4 100644
--- a/PROGRESS.md
+++ b/PROGRESS.md
@@ -54,6 +54,17 @@ Zilnică (147). Decizii luate cu el:
`tmux qa_local2`, care așteaptă terminarea primei și reia `transcribe.py`
ca să prindă fișierele mutate. `transcribe.py` sare peste ce are deja
transcriere, deci pasele sunt sigure de repetat.
+- **Workerul de pe moltbot moare fără urmă în loguri.** S-a întâmplat o dată
+ pe 2026-09-12 la 19:55, în mijlocul unui fișier de 2h11m: procesul python
+ ȘI serverul tmux au dispărut, fără traceback, fără linie de OOM (containerul
+ nu vede `dmesg`), fără reboot (uptime intact). Cel mai probabil OOM
+ nelogat — 8GB, `medium` int8 cu 5 threaduri. Coada s-a oprit 90 de minute
+ până am observat.
+ Fix: `cpu_threads` scăzut la 4, și `/root/atm/run.sh` — un supervizor care
+ relansează workerul de până la 40 de ori, cu 20s pauză, până apare
+ `ALL DONE` în log. Workerul e resumabil, deci o cădere pierde doar fișierul
+ în lucru. Pornește cu `tmux new-session -d -s qa_molt "/root/atm/run.sh"`,
+ NU cu workerul direct.
- **Workerul de pe moltbot își face `sorted(glob)` o singură dată la start**
— dacă muți/ștergi fișiere din `/root/atm/audio` cât rulează, repornește-l
(`tmux kill-session -t qa_molt` + relansare), nu te baza că observă
diff --git a/audit_diagrams.py b/audit_diagrams.py
new file mode 100644
index 0000000..268361a
--- /dev/null
+++ b/audit_diagrams.py
@@ -0,0 +1,85 @@
+"""
+Verificări mecanice pe diagramele SVG dintr-un fișier de sumarizare.
+
+Prinde exact clasele de bug găsite manual în 01_MODUL_1/05_patternuri_candele.md:
+scară inconsistentă între niveluri, text tăiat de viewBox, text suprapus,
+linii goale care rup blocul HTML. NU înlocuiește verificarea vizuală — nu
+vede dacă un text stă peste o linie de preț.
+
+Rulează: .venv/bin/python audit_diagrams.py summaries//.md
+"""
+
+import re
+import sys
+from pathlib import Path
+
+CHAR_W = 5.7 # latime medie per caracter la 12px sans-serif (calibrat pe randare)
+LINE_H = 13 # înălțimea unei linii de text
+
+
+def texts(svg: str):
+ for m in re.finditer(r']*)>(.*?)', svg, re.S):
+ attrs, inner = m.group(1), re.sub(r'<[^>]+>', '', m.group(2))
+ x = float(re.search(r'\bx="([-\d.]+)"', attrs).group(1)) if re.search(r'\bx="', attrs) else 0.0
+ y = float(re.search(r'\by="([-\d.]+)"', attrs).group(1)) if re.search(r'\by="', attrs) else 0.0
+ anchor = (re.search(r'text-anchor="(\w+)"', attrs) or [None, "start"])[1]
+ w = len(inner) * CHAR_W
+ x0 = x - w if anchor == "end" else (x - w / 2 if anchor == "middle" else x)
+ yield x0, x0 + w, y, inner.strip()
+
+
+def check(path: Path) -> list[str]:
+ md = path.read_text(encoding="utf-8")
+ problems = []
+ for i, svg in enumerate(re.findall(r'
Speculatorii = toți ceilalți, inclusiv JP Morgan când speculează,
inclusiv Warren Buffett, inclusiv retail-ul. "Dar noi suntem mici."
-
@@ -550,20 +549,20 @@ Fed-ul bagă lichiditate masiv ca să țină piața în uptrend, iar asta poate
sfârși într-un eveniment de lichiditate.
Definiția lui, care e mai utilă decât cea din manuale: un Black Swan nu e
"o știre proastă". E absența ordinelor între două prețuri.
-
+
preț ↑27.00 — ultimul preț tranzacționat aseară
-
- 24.00 — unde ți-ai pus stop-loss-ul
+
+ 24.00 — unde ți-ai pus stop-loss-ulniciun ordin aicinimeni nu cumpără între 27.00 și 10.0010.00 — prima deschidere de aziSL-ul de la 24.00 se execută la 10.00, nu la 24.00.
- Nu există niciun preț între cele două la care cineva să fi cumpărat.
+ Nu există niciun preț între cele două la care cineva să fi cumpărat.Desenat la scară: 1.00 = 9.4 px, deci golul de sub stop e la fel de mare pe cât e în realitate.
De ce e mai mult decât o curiozitate: stop-loss-ul nu e o garanție de
preț, e un ordin care se activează la un nivel și se execută la primul preț
diff --git a/summaries/09_QA/01_2026-08-25.md b/summaries/09_QA/01_2026-08-25.md
index 3f1dc12..f6442e6 100644
--- a/summaries/09_QA/01_2026-08-25.md
+++ b/summaries/09_QA/01_2026-08-25.md
@@ -425,7 +425,7 @@ indicatorul Market Picture / Commitment of Traders.
- **Speculatorii** = toți ceilalți, inclusiv JP Morgan când speculează,
inclusiv Warren Buffett, inclusiv retail-ul. "Dar noi suntem mici."
-
+Preț (weekly) ↑
@@ -437,14 +437,13 @@ indicatorul Market Picture / Commitment of Traders.
Commitment of Traderszero
- sub linie = net short / peste = net longmari comercianți (commercials)trec deasupra liniei de zero AICI
- 3-5 săptămâni până la bottom-ul de preț
+ 3-5 săptămâni până la bottom-ul de prețLinia albastră sub linia de zero = commercials net short; peste ea = net long.după bottom ies iar net short(fac hedging)
@@ -579,20 +578,20 @@ sfârși într-un **eveniment de lichiditate**.
**Definiția lui, care e mai utilă decât cea din manuale:** un Black Swan nu e
"o știre proastă". E **absența ordinelor între două prețuri**.
-
+preț ↑27.00 — ultimul preț tranzacționat aseară
-
- 24.00 — unde ți-ai pus stop-loss-ul
+
+ 24.00 — unde ți-ai pus stop-loss-ulniciun ordin aicinimeni nu cumpără între 27.00 și 10.0010.00 — prima deschidere de aziSL-ul de la 24.00 se execută la 10.00, nu la 24.00.
- Nu există niciun preț între cele două la care cineva să fi cumpărat.
+ Nu există niciun preț între cele două la care cineva să fi cumpărat.Desenat la scară: 1.00 = 9.4 px, deci golul de sub stop e la fel de mare pe cât e în realitate.
**De ce e mai mult decât o curiozitate:** stop-loss-ul nu e o garanție de
diff --git a/summaries/09_QA/03_2026-08-11.html b/summaries/09_QA/03_2026-08-11.html
index 86df6d5..fd4756c 100644
--- a/summaries/09_QA/03_2026-08-11.html
+++ b/summaries/09_QA/03_2026-08-11.html
@@ -158,7 +158,7 @@ Opțiunea amplifică; nu ea dă direcția.
MBT-10, intri fără altă confirmare.
Dar cu o nuanță care contează: prima MBT-10 de după gap down poate să nu
meargă. În general merge a doua sau a treia.
-
+
preț ↑
@@ -173,7 +173,7 @@ meargă. În general merge a doua sau a treia.
#3 — ținede aici pornește mișcarea
- Consecință practică: dimensionează poziția știind că s-ar putea să dai 2-3 încercări înainte să prindă una.
+ Consecință practică: dimensionează poziția știind că s-ar puteasă dai 2-3 încercări înainte să prindă una.
De ce contează nuanța asta (completarea mea): dacă intri cu toată
mărimea pe prima MBT-10 și te scoate, ai pierdut și banii, și încrederea să
@@ -203,7 +203,7 @@ candlestick. Problema lor: sunt extrem de rare.
cozi în ambele părțiSe întâmplă des, pe orice asset.>65% probabilitate, testat istoric.
- Un pattern cu rată bună de reușită dar care apare o dată la doi ani nu-ți produce nimic. Frecvența contează la fel de mult ca rata.
+ Un pattern cu rată bună de reușită dar care apare o dată la doi aninu-ți produce nimic. Frecvența contează la fel de mult ca rata.
Argumentul lui, verbatim: "când am o chestie care mi se întâmplă foarte
rar, cât de des pot să fac eu bani cu ea? Ce sens are să stau să mă
diff --git a/summaries/09_QA/03_2026-08-11.md b/summaries/09_QA/03_2026-08-11.md
index 05c0a38..d68bac9 100644
--- a/summaries/09_QA/03_2026-08-11.md
+++ b/summaries/09_QA/03_2026-08-11.md
@@ -151,7 +151,7 @@ MBT-10, intri fără altă confirmare.**
Dar cu o nuanță care contează: **prima MBT-10 de după gap down poate să nu
meargă. În general merge a doua sau a treia.**
-
+preț ↑
@@ -166,7 +166,7 @@ meargă. În general merge a doua sau a treia.**
#3 — ținede aici pornește mișcarea
- Consecință practică: dimensionează poziția știind că s-ar putea să dai 2-3 încercări înainte să prindă una.
+ Consecință practică: dimensionează poziția știind că s-ar puteasă dai 2-3 încercări înainte să prindă una.
**De ce contează nuanța asta (completarea mea):** dacă intri cu toată
@@ -203,7 +203,7 @@ candlestick. Problema lor: sunt extrem de rare.
cozi în ambele părțiSe întâmplă des, pe orice asset.>65% probabilitate, testat istoric.
- Un pattern cu rată bună de reușită dar care apare o dată la doi ani nu-ți produce nimic. Frecvența contează la fel de mult ca rata.
+ Un pattern cu rată bună de reușită dar care apare o dată la doi aninu-ți produce nimic. Frecvența contează la fel de mult ca rata.
**Argumentul lui, verbatim:** "când am o chestie care mi se întâmplă foarte
diff --git a/summaries/09_QA/05_2026-07-28.html b/summaries/09_QA/05_2026-07-28.html
index 48dc6ad..9b7dd90 100644
--- a/summaries/09_QA/05_2026-07-28.html
+++ b/summaries/09_QA/05_2026-07-28.html
@@ -57,7 +57,7 @@ higher highs / higher lows să se stabilească vizibil, nu doar să presupui.
Cifra de context: piața de bonduri e de 5-10 ori mai mare decât piața
de equities. Ce se decide acolo nu urmează piața de acțiuni — o precede.
Relația preț ↔ randament
-
+
Prețul bondului și randamentul (yield) sunt invers proporționaleTLT — prețul bondurilor
@@ -74,7 +74,7 @@ de equities. Ce se decide acolo nu urmează piața de acțiuni — o precede.
TLT care urcă înseamnă că cineva
cumpără bonduri — adică piața debonduri anticipează dobânzi mai mici.
- Dacă prețul urcă, dobânzile scad. Dacă dobânzile urcă, prețurile scad. Nu sunt două fenomene, e același.
+ Dacă prețul urcă, dobânzile scad. Dacă dobânzile urcă, scad prețurile.Nu sunt două fenomene, e același.
Cum a citit-o live: pe futures-ul de bonduri la 30 de ani, fiecare
respingere fusese cumpărată — semn că instituționalii cumpără bonduri.
diff --git a/summaries/09_QA/05_2026-07-28.md b/summaries/09_QA/05_2026-07-28.md
index 7e0512e..d5a6548 100644
--- a/summaries/09_QA/05_2026-07-28.md
+++ b/summaries/09_QA/05_2026-07-28.md
@@ -51,7 +51,7 @@ de equities. Ce se decide acolo nu urmează piața de acțiuni — o precede.
### Relația preț ↔ randament
-
+Prețul bondului și randamentul (yield) sunt invers proporționaleTLT — prețul bondurilor
@@ -68,7 +68,7 @@ de equities. Ce se decide acolo nu urmează piața de acțiuni — o precede.
TLT care urcă înseamnă că cinevacumpără bonduri — adică piața debonduri anticipează dobânzi mai mici.
- Dacă prețul urcă, dobânzile scad. Dacă dobânzile urcă, prețurile scad. Nu sunt două fenomene, e același.
+ Dacă prețul urcă, dobânzile scad. Dacă dobânzile urcă, scad prețurile.Nu sunt două fenomene, e același.
**Cum a citit-o live:** pe futures-ul de bonduri la 30 de ani, fiecare
diff --git a/summaries/09_QA/10_2025-12-02.html b/summaries/09_QA/10_2025-12-02.html
index a5715a5..968ca39 100644
--- a/summaries/09_QA/10_2025-12-02.html
+++ b/summaries/09_QA/10_2025-12-02.html
@@ -113,7 +113,7 @@ consolidare.
sprinturi nu se oprește — aleargă ușor între ele. Consolidarea e alergarea
ușoară. După ea vine un nou sprint, care poate fi în direcția trendului sau
invers.
-
+
preț ↑sprint (trend)
@@ -124,7 +124,7 @@ invers.
sau sprint invers (reversal)sprint nou, în direcția trendului
- Din trend se trece prin consolidare, apoi ori continuă trendul, ori se schimbă. Direcția nu se știe dinainte.
+ Din trend se trece prin consolidare, apoi ori continuă trendul,ori se schimbă. Direcția nu se știe dinainte.
Definiția de uptrend pe care a repetat-o ("scărița"): high-ul de azi mai
sus decât high-ul de ieri și low-ul de azi mai sus decât low-ul de ieri.
diff --git a/summaries/09_QA/10_2025-12-02.md b/summaries/09_QA/10_2025-12-02.md
index 802fe79..513c08f 100644
--- a/summaries/09_QA/10_2025-12-02.md
+++ b/summaries/09_QA/10_2025-12-02.md
@@ -119,7 +119,7 @@ sprinturi nu se oprește — **aleargă ușor** între ele. Consolidarea e alerg
ușoară. După ea vine un nou sprint, care poate fi în direcția trendului sau
invers.
-
+preț ↑sprint (trend)
@@ -130,7 +130,7 @@ invers.
sau sprint invers (reversal)sprint nou, în direcția trendului
- Din trend se trece prin consolidare, apoi ori continuă trendul, ori se schimbă. Direcția nu se știe dinainte.
+ Din trend se trece prin consolidare, apoi ori continuă trendul,ori se schimbă. Direcția nu se știe dinainte.
**Definiția de uptrend pe care a repetat-o** ("scărița"): high-ul de azi mai
diff --git a/summaries/09_QA/12_2025-11-18.html b/summaries/09_QA/12_2025-11-18.html
index 49f6ad6..5bea1f7 100644
--- a/summaries/09_QA/12_2025-11-18.html
+++ b/summaries/09_QA/12_2025-11-18.html
@@ -261,7 +261,7 @@ de 2% se încalcă cel mai ușor.
Citirea de bottom din ziua aceea
Confluența pe care a folosit-o ca să spună că suntem într-o zonă de suport
importantă:
-
+
Cinci semnale în același punctPivotul quarterly
@@ -283,7 +283,7 @@ importantă:
pe structura de prețContextul: S&P urcase 33-40% de la bottom, cu 7 luni consecutive de creștere — rar istoric.Căzuse doar 4-5%. Părerea lui: o corecție de 10-12% ar fi fost sănătoasă.
- Scenariul de risc: dacă e Head & Shoulders, mișcarea măsurată duce fix în pivotul quarterly, încă ~2% mai jos.
+ Scenariul de risc: dacă e Head & Shoulders, mișcarea măsuratăduce fix în pivotul quarterly, încă ~2% mai jos.
Regula de acțiune pe care a dat-o: dacă prețul ajunge în pivotul
quarterly, acolo se cumpără pe ATMI (strategia de investiții pe termen
diff --git a/summaries/09_QA/12_2025-11-18.md b/summaries/09_QA/12_2025-11-18.md
index dda53ec..ef02344 100644
--- a/summaries/09_QA/12_2025-11-18.md
+++ b/summaries/09_QA/12_2025-11-18.md
@@ -266,7 +266,7 @@ de 2% se încalcă cel mai ușor.
Confluența pe care a folosit-o ca să spună că suntem într-o zonă de suport
importantă:
-
+Cinci semnale în același punctPivotul quarterly
@@ -288,7 +288,7 @@ importantă:
pe structura de prețContextul: S&P urcase 33-40% de la bottom, cu 7 luni consecutive de creștere — rar istoric.Căzuse doar 4-5%. Părerea lui: o corecție de 10-12% ar fi fost sănătoasă.
- Scenariul de risc: dacă e Head & Shoulders, mișcarea măsurată duce fix în pivotul quarterly, încă ~2% mai jos.
+ Scenariul de risc: dacă e Head & Shoulders, mișcarea măsuratăduce fix în pivotul quarterly, încă ~2% mai jos.
**Regula de acțiune pe care a dat-o:** dacă prețul ajunge în **pivotul