# Audit

Ce a fost verificat înainte de publicare, cum, și ce a ieșit. Stare: 30 iulie 2026.

## Automatizat: `node qa_assertions.mjs`

**202 verificări, toate trec.** Rulează pe originea servită, fără browser, deci
merge și local și pe producție.

Ce acoperă:

- **Livrare.** Cele șase pagini răspund cu peste 3.000 de octeți. Cele nouă
  fișiere de date și de asset-uri răspund. O adresă inexistentă dă 404, nu 200.
- **Publicare.** Fiecare pagină descoperă reprezentarea Markdown. `robots.txt`
  declară `ai-train=no, search=yes, ai-input=yes`. Footerul și JSON-LD trimit la
  catalogul localizat al lui Marius Comper. Toate paginile au controlul spre
  început cerut pentru trasee lungi.
- **Reproducere.** Arhiva publică și checksumul ei răspund, iar paginile de
  metodă RO și EN trimit explicit la același pachet.
- **Coerența datelor.** Indexul are exact lungimea anunțată în metadate, e sortat
  și fără dubluri. Cele cincisprezece straturi există toate și fiecare are
  exemple. Ramurile ro și en ale datelor de client au aceleași chei. Cinci
  intervale istorice, nouă documente oficiale. Fiecare serie are text atribuit,
  iar atribuitul nu depășește totalul. Procentele pe strat însumează 100 în
  ambele registre contemporane, cu toleanță de o jumătate de punct.
- **Fiecare cifră din text.** Cele treizeci și șapte de cifre tipărite în proză
  sunt recalculate din datele publicate și căutate în HTML, în formatul limbii:
  numărul de cuvinte, lexemele cu donator, procentele de tipuri și de ocurențe pe
  strat, rapoartele vorbit/scris, procentele franceze și slavone din fiecare
  document oficial, volumele celor patru corpusuri, formele flexionare, acordul cu
  dexonline la ambele niveluri, plafonul pe autor, primul interval. Verifică și
  că vârful francez din textul oficial cade în 1952, nu doar valoarea lui.
- **Corecțiile de mână.** Fiecare dintre cele patrusprezece apare pe pagina de
  metodă, iar numărul lor e tipărit corect.
- **Coloana stratigrafică.** Cele cincisprezece benzi și cele cincisprezece rânduri
  de legendă poartă toate trei cifrele (tipuri, vorbit, scris) și fiecare se
  potrivește cu datele la o sutime de punct.
- **Dicționarul.** Nouă cuvinte-sondă sunt în feliile lor, în stratul așteptat, cu
  frecvențe numerice: mahala în turcă, bulevard în franceză, oraș în maghiară,
  dragoste în slavonă, biserică în latină, brânză în substrat, deget în latină,
  digital în franceză, cafea în turcă.
- **Lematizarea în client.** Patru forme duc la lema corectă: „caselor” → casă,
  „mahalaua” → mahala, „branza” → brânză, „oraşul” → oraș. Adică flexiune,
  diacritice lipsă și sedilă în locul virgulei.
- **Invariante editoriale.** Nicio pagină nu conține o sedilă turcească (ş, ţ) în
  text. Nicio pagină nu conține un jeton `{numeCifră}` neînlocuit. Fiecare pagină
  își declară limba, are canonical, are og:image și trimite la cealaltă ediție.
  Ediția română nu conține navigație englezească și invers.

## Verificat în build: `node build.mjs`

- **Paritatea de structură.** Buildul compară recursiv formele ramurilor `ro` și
  `en` din `copy.mjs`, inclusiv lungimile listelor, și se oprește cu lista cheilor
  divergente. O secțiune adăugată într-o limbă și uitată în cealaltă nu poate fi
  publicată.
- **Jetoanele.** Orice `{nume}` din text care nu are o valoare calculabilă
  oprește buildul. Reversul, un jeton calculat și nefolosit, e permis.

## Verificat în browser

- Fișa cuvântului se randează corect pentru cuvinte din straturi diferite, cu
  lanțul etimologic în scrierile originale: „mahala” arată محله cu transliterarea
  *mahalle* și mai departe araba مَحَلَّة.
- Formele flexionare se rezolvă în client: „mahalaua” tastat în casetă întoarce
  fișa lemei „mahala” și scrie `#mahala` în adresă, deci fișa e partajabilă.
- Coloana stratigrafică respectă proporțiile: la modul „cuvinte din dicționar”,
  banda franceză măsoară 266 de pixeli și substratul 3, adică raportul dintre 59,9
  și 0,3 la sută. Prima variantă, cu numele scris în bandă, a fost aruncată: un
  minim de înălțime pentru text turtea toate straturile mici la aceeași grosime și
  minciuna se vedea la măsurătoare.
- Diacriticele românești se desenează cu virgulă, nu cu sedilă, atât în pagină cât
  și în cardul social. Verificat prin decupare și mărire pe „și când” din
  subtitlul cardului.
- Controlul spre început a trecut scriptul canonic local și live, în RO și EN,
  la 320, 390, 768 și 1440 px: fallback fără JavaScript, prag de apariție,
  țintă tactilă, coliziuni, ridicare deasupra footerului, focus și reduced motion.
- Live, `Accept: text/markdown` întoarce Markdown cu `Vary: Accept`, `Link` și
  Content Signals, iar `text/markdown;q=0` păstrează HTML.

## Paleta

Trecută prin validatorul din skill-ul `dataviz`, nu aleasă din ochi.

- Perechea de accente (`#2a5ea8` / `#b4531f` la lumină, `#4f8ede` / `#d66c34` la
  întuneric) trece toate cele cinci probe în ambele moduri, pe toate perechile:
  bandă de luminozitate, prag de cromă, separare la daltonism (ΔE 21,2 protan),
  prag pentru vederea normală (ΔE 27,0), contrast față de suprafață.
- Prima variantă avea patru serii, cu prună și verde; a căzut la cromă și la
  pragul pentru vedere normală (albastru și prună, ΔE 14,2, sub 15). Soluția n-a
  fost re-eșantionarea culorilor, ci schimbarea formei: graficul textelor oficiale
  e acum patru mici multipli cu o serie fiecare, deci nu are nevoie de o paletă
  categorială.
- Cele cincisprezece straturi **nu** sunt colorate pe identitate. O rampă ordinală
  de cincisprezece pași a căzut la proba de distanță între pași, ceea ce era
  răspunsul corect: grosimea benzii duce cifra, iar legenda duce numele.
- Contrastul textului a fost măsurat în ambele moduri și corectat unde cădea:
  textul mărunt gri era la 3,86 pe hârtie deschisă și la 4,39 pe fundal închis,
  amândouă sub 4,5; acum sunt la 5,25 și 4,98. Culoarea benzilor de sediment
  rămâne sub 3:1 față de hârtie în modul deschis, ceea ce e acceptat prin regula
  de compensare: fiecare bandă are `aria-label` cu nume și cifră, iar legenda de
  lângă scrie amândouă în text, deci informația nu depinde de culoare.

## Ce nu a fost verificat

- Nu a fost testat cu cititor de ecran. Structura are landmark-uri, `aria-label`
  pe fiecare bandă și pe fiecare grafic, tabel alternativ pentru graficul
  oficial, și `aria-live` pe zona de rezultat, dar nu am ascultat-o.
- Nu a fost testat pe un telefon adevărat, doar la lățimi mici în panoul de
  browser.
- Etimologia fiecărui cuvânt publicat nu e verificată individual. Sunt 15.658.
  Ce e verificat: acordul cu o a doua sursă pe 13.635 dintre ele, și manual
  primele 250 după greutatea în text, adică felia care decide procentele.
