Prezenta specificație traduce SO-13 într-un set de cerințe tehnice executabile pentru implementarea Etapei E1 (susținere civică neoficială). Documentul este subordonat SO-13 și nu introduce reguli noi de fond; valorile concrete (limite, praguri, microtexte) sunt parametri de implementare ai regulilor stabilite în SO-13.
Fiecare secțiune indică articolul din SO-13 pe care îl execută. Orice abatere se rezolvă în favoarea SO-13 și, mai departe, a Cartei V7.0 (Art. 50).
Domeniu V1.0: se implementează integral Etapa E1. Etapele E2 și E3 sunt puncte de extensie inactive (Secțiunea 12), funcționale exclusiv după adoptarea Inițiativa Legislativă (IL-000) (SO-13, Art. 5).
1. Obiectul documentului
Execută SO-13 la nivel de interfață, flux și dezvoltare. În caz de conflict, SO-13 și Carta V7.0 prevalează.
2. Mediul tehnic țintă
Implementarea reutilizează infrastructura existentă a platformei:
- Frontend: pagini statice pe Cloudflare Pages (ra-landing), integrate în paginile IL-XXX și RA-XXX;
- Backend: Cloudflare Worker dedicat Agorei, separat de worker-ul de susțineri, API JSON;
- Stocare: Cloudflare KV — proiecții de citire (carduri, contoare) și jurnal de evenimente (Secțiunea 7);
- Domeniu sugerat: subdomeniu dedicat (ex.
agora.revolutiaadevarului.eu).
3. Sistemul de design
Secțiunea Agora E1 folosește sistemul de design al site-ului live.
3.1 — Tokeni de culoare
| Token | Valoare | Utilizare |
|---|---|---|
--crem | #f5f0e8 | fundal secțiune |
--negru | #1a1a18 | text principal, header tabele |
--rosu | #c0392b | accente, butoane primare, etichetă CONTRA |
--verde | #1a7a4a | etichetă PRO, stare validată |
--auriu | #b8860b | note, indicatori de etapă |
--gri | #6b6b65 | metadate (dată, ID, sursă) |
3.2 — Tipografie
- Titluri: Playfair Display
- Corp: Source Serif 4
- Metadate, ID-uri: JetBrains Mono
4. Componentele de interfață
Execută SO-13, Art. 3. Fiecare componentă are stările indicate.
4.1 — Antetul secțiunii
Titlu, subtitlu și indicator de etapă (text exact în Secțiunea 5). Indicatorul este afișat permanent deasupra listei și reluat lângă „Susține inițiativa”.
4.2 — Butonul și formularul „Adaugă un argument”
Stări: implicit → formular deschis → în trimitere (dezactivat) → succes → eroare moderare N1 (mesaj + text păstrat).
4.3 — Cardul de argument
PRO (verde) / CONTRA (roșu), text, surse, contoare vot, dată/oră, ID monospace, „Raportează”. Stare „în revizuire” — marcaj vizibil, votare dezactivată.
4.4 — Filtre, întrebări, susținere, documentare
Filtre: cele mai votate, cele mai noi, cele mai relevante, doar PRO, doar CONTRA. Secțiune întrebări cu formular propriu. „Susține inițiativa”. Link „Documentare completă” → Arhivă.
5. Microtextele interfeței (UX copy)
Texte exacte, în limba română. Execută SO-13, Art. 3 și Art. 5.
| Element | Text exact |
|---|---|
| Titlu secțiune | Agora Digitală — Etapa E1: Dezbatere publică structurată pe argumente |
| Subtitlu | Aici poți contribui cu argumente pro sau contra. Fără politică. Fără atacuri. Doar idei. |
| Indicator de etapă | Agora Digitală — Etapa E1: susținere civică neoficială, fără valoare juridică în procedura inițiativei cetățenești. |
| Buton principal | Adaugă un argument |
| Confirmare publicare | Argumentul tău a fost publicat în Agora E1. |
| Blocare moderare N1 | Argumentul nu a putut fi publicat: conține elemente care încalcă regulile Agorei (politică partizană, atac la persoană sau limbaj nepotrivit). Reformulează-l, păstrând doar argumentul de fond, și încearcă din nou. |
| Etichetă vot pro | Susțin |
| Etichetă vot contra | Nu susțin |
| Buton susținere | Susține inițiativa |
| Confirmare susținere | Ți-ai exprimat susținerea neoficială pentru această inițiativă. Aceasta nu este o semnătură legală. |
| Marcaj în revizuire | Acest argument este în revizuire în urma raportărilor primite. |
| Link documentare | Documentare completă |
6. Modelul de date
Execută SO-13, Art. 4 și Art. 8.1. Entitățile sunt proiecții derivate din jurnalul append-only (Secțiunea 7).
6.1 — Argument
| Câmp | Tip | Descriere |
|---|---|---|
| id | string | identificator unic, prefix „arg_” |
| tinta_id | string | IL-XXX sau RA-XXX |
| tip | enum | PRO | CONTRA |
| text | string ≤500 | textul argumentului |
| surse | string[] | referințe opționale |
| status | enum | publicat | in_revizuire | ascuns |
| versiune | int | incrementată la editare N3 |
| voturi_sustin / voturi_contra | int | proiecție (contor) |
| creat_la | timestamp | data/ora publicării |
| motiv_moderare | string? | completăt la decizie N3 |
6.2 — Vot, Întrebare, Raportare, Susținere
- Vot:
{ id, argument_id, token_participant, valoare: SUSTIN | NU_SUSTIN, creat_la, actualizat_la }— unicitate (argument_id, token_participant). - Întrebare:
{ id, tinta_id, text ≤300, sursa?, status, creat_la }. - Raportare:
{ id, argument_id, token_participant, motiv?, creat_la }— unicitate (argument_id, token_participant). - Susținere:
{ id, tinta_id, token_participant, creat_la }— unicitate (tinta_id, token_participant).
7. Jurnalul append-only și proiecțiile
Execută SO-13, Art. 8.2. Toate acțiunile sunt evenimente cronologice nealterabile.
7.1 — Tipuri de evenimente
ARGUMENT_TRIMIS · ARGUMENT_PUBLICAT · ARGUMENT_RAPORTAT · ARGUMENT_IN_REVIZUIRE · ARGUMENT_PASTRAT · ARGUMENT_EDITAT · ARGUMENT_ASCUNS · VOT_EXPRIMAT · VOT_MODIFICAT · INTREBARE_TRIMISA · SUSTINERE_INREGISTRATA
7.2 — Structura unui eveniment
{ id, tip, entitate_tip, entitate_id, sarcina_utila, creat_la, hash_anterior, hash } — lanț de amprente. „Ascunderea” = eveniment ARGUMENT_ASCUNS; conținutul rămâne în jurnal (SO-13, Art. 8.3).
7.3 — Consolidare și ancorare
Periodic (minimum lunar și la fiecare decizie N3): consolidare, SHA-256, ancorare OpenTimestamps pe Bitcoin (P7, Art. 49 Cartă V7.0).
8. Interfața de programare (API)
Execută SO-13, Art. 4, 6, 7. Endpoint-uri JSON; cererile de scriere trec prin anti-abuz (Secțiunea 10).
| Metodă | Cale | Acțiune |
|---|---|---|
| GET | /agora/:tinta_id | listă argumente + contoare + întrebări |
| POST | /agora/:tinta_id/argument | trimite argument → moderare N1 → jurnal |
| POST | /agora/argument/:id/vot | exprimă/modifică vot |
| POST | /agora/argument/:id/raportare | raportează (prag 3 → în revizuire) |
| POST | /agora/:tinta_id/intrebare | trimite întrebare → moderare N1 |
| POST | /agora/:tinta_id/sustinere | susținere neoficială |
| POST | /agora/moderare/:id | decizie N3 — autorizat |
9. Specificația filtrului de moderare Nivel 1
Execută SO-13, Art. 6.1 și 6.2. Se aplică la trimitere, înaintea jurnalului.
9.1 — Categorii blocate
- Injurii și limbaj abuziv
- Politică partizană (partide, candidați, guverne — laudă/blamare/promovare)
- Atacuri la persoană
- Spam și conținut repetitiv
- Linkuri către domenii nesigure (listă permise + euristică)
9.2 — Comportament
La detecție: argumentul nu se publică; se returnează mesajul din Secțiunea 5; textul rămâne în formular. Încercările blocate pot fi metrici interne anonimizate.
10. Reguli de validare și anti-abuz
Execută SO-13, Art. 7. Parametri ajustabili fără modificarea SO-13.
10.1 — Validare câmpuri
- Argument: 1–500 caractere; tip PRO/CONTRA; surse URL opționale
- Întrebare: 1–300 caractere; sursă opțională
10.2 — Tokenul de participant
Cookie semnat opac, fără date personale — deduplicare voturi/raportări/susțineri; nu este verificare de identitate (SO-13, Art. 5.2).
10.3 — Limitarea ratei (valori sugerate)
| Acțiune | Limită | Fereastră |
|---|---|---|
| Trimitere argument | 5 | / oră / token |
| Trimitere întrebare | 5 | / oră / token |
| Vot | 1 / argument | modificabil |
| Raportare | 1 / argument | — |
| Susținere inițiativă | 1 / inițiativă | — |
| Cereri totale de scriere | 30 | / oră / origine IP |
11. Regim special pentru cazurile IIS
Execută SO-13, Art. 11. Antet non-partizan obligatoriu; moderare N1/N3 prioritară.
RA-IIS-04: regim questions-only la lansare — „Adaugă un argument” inactiv, doar întrebări, antet citează HCCR nr. 32/2024. Trecerea la modul complet prin comutator de configurare, după validarea coordonatorului.
12. Puncte de extensie inactive (E2 / E3)
Execută SO-13, Art. 5. În V1.0, E2/E3 nu se implementează funcțional:
- câmp
etapa_activafixat la „E1”, needitabil din interfața publică; - rezervare tipuri eveniment/entități E2/E3, fără logică activă;
- notă vizibilă: E2/E3 după adoptarea Inițiativei Legislative (IL-000).
Condiție de blocare: activarea E2/E3 imposibilă programatic cât timp „Inițiativă Legislativă (IL-000) adoptat” nu este marcat la nivel de platformă (Art. 33 Cartă).
13. Criterii de acceptanță (Definition of Done)
Implementarea E1 este completă când toate criteriile sunt îndeplinite:
- Antetul afișează permanent indicatorul de etapă (text Secțiunea 5).
- Formular argument ≤500 caractere PRO/CONTRA; întrebare ≤300.
- Conținut partizan/injurios/link nesigur blocat de N1, absent din listă.
- Vot unic per (argument, token), modificabil.
- A 3-a raportare distinctă → „în revizuire”, votare dezactivată.
- Decizie N3 ascundere: retras din listă, conținut în jurnal cu motiv public.
- Jurnal append-only; fără endpoint de ștergere/modificare evenimente.
- Lanț hash verificabil; consolidare SHA-256 + timestamp la cerere.
- Indicatorii 100/1.000/100 ca metrici, fără schimbare
etapa_activa. - „Susține inițiativa” cu confirmare non-semnătură legală.
- Fără localStorage/sessionStorage; token server-side.
- E2/E3 imposibil de activat fără Inițiativa Legislativă (IL-000) adoptat.
- RA-IIS-04 în regim questions-only la lansare.
- Informare concisă GDPR la contribuție (SO-13, Art. 8.3).
Documentat cu rigoare. Publicat cu responsabilitate. Același mecanism. Oriunde. Oricând.