# Etichete peste desen în capitolele vechi — inventar, nu reparație Scanare din 02.10.2026, cerută după ce `gen/eticheta_libera.py` a scos 9 suprapuneri din `mbp_ansamblu` (dintre care două invizibile fără unealtă). Întrebarea: cât de răspândită e clasa asta în capitolele 01-05 și anexe. **Nu s-a reparat nimic.** Niciun fișier din `gen/` sau `summaries/` nu a fost atins pentru raportul ăsta. ## Cum s-a scanat `eticheta_libera` e opt-in, pe etichete numite — pentru o scanare oarbă am rulat aceeași geometrie peste **toate** etichetele, pe fiecare sub-panou (`` imbricat) separat, ca să nu compar coordonate din panouri diferite. Marjă 4 px. Au fost scoase din numărătoare trei clase de fals pozitiv: - **A — eticheta stă pe linia ei.** Convenția diferă de la un generator la altul (unele pun textul deasupra liniei, altele dedesubt), așa că „a ei" se decide prin cea mai apropiată etichetă de linia respectivă, nu printr-un offset fix. - **B — capătul propriei săgeți sau linii de legătură.** Prin construcție coada săgeții pornește din text. - Dreptunghiuri mai late de 60 px sau mai înalte de 220 px: fundaluri de panou, nu corpuri de candelă. Ce rămâne — bucata „C" — e ce raportez mai jos. | Capitol | Atingeri | A: linia proprie | B: coada săgeții | **Rămase (C)** | |---|---|---|---|---| | `01_buy_doji` | 149 | 59 | 60 | **30** | | `02_mp2` | 93 | 52 | 20 | **21** | | `03_m2d` | 67 | 18 | 27 | **22** | | `04_selectia` | 30 | 12 | 14 | **4** | | `05_atmi` | 45 | 16 | 11 | **18** | | `A1_risc` | 0 | 0 | 0 | **0** | | `A2_contradictii` | 0 | 0 | 0 | **0** | | `A3_intrarea` | 23 | 18 | 3 | **2** | `A1` și `A2` n-au diagrame de tip grafic — zero, nu „curat prin verificare". `audit_diagrams.py` trece curat pe toate opt: clasa asta e invizibilă pentru el, exact ca la `mbp_ansamblu`. Auditul prinde text peste text; aici e text peste linie, peste polilinie sau peste corp de candelă. ## Verificate vizual (screenshot citit) 12 diagrame: `01`/`stop`, `perechi_tf`, `directie`, `trend`, `transe`; `02`/`crossing`, `pivoti`, `trigger`, `exemplu`; `03`/`directie`, `stop`; `05`/`orizont`; `A3`/`doua_variante`. Restul e clasificat **doar din geometrie** și e marcat ca atare. --- ## MINCINOASE — schimbă ce înțelege cititorul Trei, toate din aceeași familie: **cifra e tăiată sau acoperită**, nu mutată. ### 1. `03_m2d` — `gen/strategii/m2d_directie.py`, ambele panouri `minimul din care a pornit mișcarea 99.80` intră cu ultimele caractere sub corpul unei candele verzi. Pe ecran se citește **„…mișcarea 99.8"** — zecimala dispare. Nivelul ăsta e condiția care decide dacă setup-ul mai e valid („close 99.30, sub 99.80: direcția mare s-a răsucit"), deci e fix cifra pe care cititorul o caută. Apare de două ori, o dată în fiecare panou. ### 2. `05_atmi` — `gen/strategii/atmi_orizont.py` Eticheta `2 săptămâni` a barei portocalii e acoperită de marginea din stânga a casetei de citat de lângă ea; se vede **„2 săptămân"**. E singura cifră care dă contrastul diagramei (luni/ani față de două săptămâni), iar diagrama există tocmai ca să arate contradicția. ### 3. `01_buy_doji` — `gen/strategii/buy_doji_stop.py`, panoul de jos `stop pus la ochi: 49.70` și `stopul din regulă: 49.20` stau la 12 px unul sub altul, fiecare cu linia lui întreruptă, iar linia portocalie a lui 49.70 trece prin caseta etichetei lui 49.20. Cifrele sunt scrise, deci nu citești un preț greșit — dar nu poți atribui corect cele două linii, iar toată diagrama e despre diferența dintre ele. **La limită**: o pun aici pentru că obiectul diagramei e chiar distincția asta. --- ## DOAR URÂTE — cosmetice, pot aștepta Restul de ~94. Se grupează în patru tipare; niciunul nu face să citești un preț la înălțimea altuia. **(a) Etichetă descriptivă peste un corp de candelă** — cel mai des. Textul începe fix pe marginea unei candele, cu una-două litere peste ea; rămâne lizibil pentru că fundalul candelei e la capătul rândului, nu sub el. `01`: `ansamblu` (2), `directie`, `trend` (3), `fereastra` (2), `stop`, `iesire`, `aplus`, `perechi_tf` · `02`: `perechi_tf`, `crossing`, `trigger`, `aplus` (3), `exemplu` (2), `pivoti_excel` (3) · `03`: `directie`, `trigger` (2), `iesire` (2), `exemplu` · `05`: `ansamblu`, `trigger` (3), `risc`, `exemplu` · `A3`: `cazul_lui`. **(b) Două niveluri prea apropiate, fiecare cu linia lui** — eticheta de jos atinge linia de sus. `01`/`perechi_tf` (`weekly 105.20`, `retest: high doji`), `02`/`crossing` (`crossing: 61.70 → 62.20`, `pivot weekly (cel MARE) 62.00`), `02`/`perechi_tf`, `02`/`bottom`, `03`/`stop` (`512.87` față de `512.02`, la 9 px), `03`/`directie` (`close-ul candelei de semnal 100.60`), `04`/`exemplu`, `A3`/`doua_variante` (`B: 1/3 = 101.55` / `B: 1/2 = 101.25`). Verificate: toate rămân lizibile, pentru că prețul e scris în etichetă. **(c) Linie de legătură lungă care traversează un alt text** — săgeți ce pleacă din subsolul diagramei spre o bară din mijloc. `01`/`stop` (4), `01`/`transe` (5), `01`/`directie` (2), `02`/`stop`, `03`/`directie` (4), `03`/`secventa`, `03`/`iesire` (4), `04`/`ansamblu`, `05`/`perechi_tf` (2), `05`/`trigger`. **(d) Text peste linii de structură ale unei diagrame care nu e grafic de preț** — coloane, axe de timp, chenare. `05`/`orizont` (9 din cele 18 ale capitolului, în afară de „2 săptămâni"), `04`/`univers` (2), `02`/`pivoti_excel`. --- ## Verdict **Merită un lot, dar mic — cele trei mincinoase, nu cele 94.** Clasa asta e răspândită (97 de atingeri reale în 6 capitole), dar aproape tot e zgomot vizual pe care cititorul îl traversează fără să piardă informație. Ce costă e doar cifra tăiată: la `03_m2d`/`directie` și `05_atmi`/`orizont` numărul nu se poate citi întreg, iar la `01_buy_doji`/`stop` cele două stopuri nu se pot atribui liniilor lor. Trei generatoare, trei mutări de etichetă — o sesiune scurtă, nu un lot. Pentru restul, lucrul util nu e repararea, ci **importul lui `eticheta_libera` în generatoarele atinse data viitoare oricum**, pe etichetele care poartă cifre. Așa clasa nu mai crește, fără să plătim acum pentru 94 de suprapuneri inofensive. Nota de scanare: `08_mbp` (comis) mai are două atingeri din tiparul (b), în `mbp_stop` (`banda inferioară 623.90` la 9 px sub linia intrării) și `mbp_exemplu` (`intrare short 660.00` la 2 px de `bandă superioară`). Ambele lizibile; le las aici ca să nu se piardă. --- ## Adaugat pe 02.10, de la corectorul lui 07_mdsrt Doua defecte vechi, vazute dar neatinse (nu erau pe lista lui): - `mdsrt_short.svg` — titlul „Oglinda pe short (serie construita prin rasturnarea exemplului long)" e traversat de coada sagetii „piciorul 1". - `mdsrt_aplus`, panoul NU — `cds_n[18].l` e 94.50, dar nivelul se cheama „primul low 94.60". E close-ul, nu low-ul. --- ## Filtrul orb: cifră peste un corp plin (scanare 02.10.2026) Cerut după trierea vizuală a capitolelor 02 / 04 / A3, care a dat o singură cauză fizică pentru suprapunerile care chiar schimbă ce citești: textul stă peste un `` **plin**, iar caracterele nu se încalecă — dispar. Peste o linie subțire (nivel, fitil, coadă de săgeată, chenar) textul rămâne lizibil, oricât de urât arată. De aceea tiparele (a)-(d) de mai sus nu merită un lot, dar clasa asta merită o listă. `gen/eticheta_libera.py` are acum `cifre_ascunse(svg)`, care nu e opt-in pe etichete numite — fiind îngustă, rulează oarbă: .venv/bin/python gen/eticheta_libera.py gen/strategii/*.svg \ summaries/06_MODUL_5/*.md Ce raportează: o etichetă **care conține o cifră**, peste un dreptunghi plin, în unul din două cazuri — (1) **aceeași culoare** (verde pe verde: caracterul dispare oricare ar fi ordinea de desenare), sau (2) **desenat peste** text (corpul e pictat după etichetă, deci o acoperă indiferent de culoare — cazul `m2d_directie` din lista „mincinoase"). Pragurile: distanță RGB sub 60, suprapunere de cel puțin 4 px pe orizontală și 4 px pe verticală, opacitatea dreptunghiului cel puțin 0.5 (zonele palide nu acoperă nimic). Transparența se amestecă peste alb înainte de comparație, deci barele de volum la 0.55 nu se aprind. Bucata „dispare ~" e aproximativă (lățime uniformă pe caracter), dar spune dacă gaura cade pe cifră sau pe o literă. Calibrare: lățimea din `_bbox` (CW = 6.2) e potrivită pentru bold și prea largă pentru restul; la o etichetă lungă nebold coada goală de ~30 px prindea candela de alături (`buy_doji_labu`, `mp2_aplus` — ambele verificate pe ecran, false pozitive). Filtrul folosește CW = 5.4 pentru textul nebold. Pe versiunea de dinaintea reparațiilor de azi, `mp2_exemplu` („intrare 577.00", 0 păstrat de corpul verde) și `m2d_directie` (ambele panouri) sunt prinse — cele două defecte reale confirmate vizual, deci filtrul nu e doar strâmt, e și calibrat. ### Rezultat: 17 etichete, în 13 diagrame **Gaura cade pe cifră (9):** ``` m2d_iesire.svg: 'intrare 99.60' — dispare ~'60' (12 px, desenat peste) mdsrt_exemplu.svg: 'TP1 624.70 = 1:1 (construit)' — dispare ~'1 (' (9 px, desenat peste) mp2_short.svg: '128.97: crossing bear' — dispare ~'8.' (9 px, desenat peste) 02_patternuri_complexe_partea_a_treia.md #3: 'SL 29.40' — dispare ~'9.4' (9 px, aceeași culoare) 02_patternuri_complexe_partea_a_treia.md #4: 'target 62.00 = 65.00 − 3.00' — dispare ~'62.' (9 px, desenat peste) 02_patternuri_complexe_partea_a_treia.md #5: 'target 60.50 = 65.00 − 4.50' — dispare ~'0.5' (9 px, desenat peste) 02_patternuri_complexe_partea_a_treia.md #8: 'intrare short 89.00' — dispare ~' 8' (9 px, desenat peste) 02_patternuri_complexe_partea_a_treia.md #8: 'target 60.00 = 90.00 − 30.00' — dispare ~' 90' (9 px, desenat peste) 04_strategia_7_micis.md #6: 'intri cu 1/3 și rămâi cu 1/3' — dispare ~'1/3' (10 px, aceeași culoare) ``` **Gaura cade pe o literă (8) — eticheta are cifre, dar ce dispare e text:** ``` hammer_mbt10_bh_stop.svg: 'intrare 63.35 (close-ul confirmării)' — dispare ~'irm' (13 px, desenat peste) hammer_mbt10_mbt_close.svg: 'la 55.30, în timpul zilei, semnalul' — dispare ~'sem' (13 px, aceeași culoare) mdsrt_exemplu.svg: 'hammer închide 622.60, înapoi peste pivot' — dispare ~'oi' (9 px, aceeași culoare) mdsrt_exemplu.svg: 'intri aici: close peste high-ul hammer-ului (622.70)' — dispare ~'r-' (9 px, aceeași culoare) 02_patternuri_complexe_partea_a_treia.md #5: 'suport (neckline) 65.00' — dispare ~'in' (9 px, desenat peste) 02_patternuri_complexe_partea_a_treia.md #7: 'limita de 50% 100.00' — dispare ~'ta ' (9 px, desenat peste) 03_patternuri_complexe_partea_a_patra.md #8: 'TP2 42.40 = batul steagului = 6.2R' — dispare ~' = ' (9 px, desenat peste) 05_strategia_8_dhrt.md #10: 'vârful consolidării 53.70 = locul crimei' — dispare ~'ons' (12 px, desenat peste) ``` Verificate pe ecran, cu zoom 4x: 6 din 17, luate din ambele categorii (`m2d_iesire` „99.6|", `mdsrt_exemplu` „= 1:_ (construit)", `mp2_short` cu „128" sub corpul roșu, `hammer_mbt10_bh_stop` „confirm_rii", `02_patternuri…` „neckl_ne", `05_strategia_8_dhrt` „c_nsolidării"). Toate șase, reale. Nu am reparat nimic și n-am atins capitolele 06, 09, 10, care sunt în lucru la alt agent. Două observații pentru cine ia lista: - Jumătate din cazuri înghit o literă, nu o cifră: filtrul cere ca eticheta să **conțină** o cifră, nu ca gaura să cadă pe ea. Dacă lotul trebuie scurtat, primele 9 sunt cele care costă. - Nouă din cele 17 sunt în `summaries/06_MODUL_5/` — adică în diagramele de modul, nu în cele de strategie. Acolo nu s-a făcut niciodată o trecere de etichete.