Retest nakon VAL A–F, mjeren izvršenim tokom na živom sustavu. Usput nađen i popravljen P0 koji nije bio na nijednoj listi.
Ništa nije preuzeto iz prethodnog izvještaja — on je snimljen prije nego što su VAL A–F ušli u kod. Sve je premjereno na živom EU čvoru:
1.000,00, OIB, IBAN, pravi QR s JIR/ZKI) → upload → obrada → pečat → cross-tenant napad| Kategorija | Prije | Sada | Δ |
|---|---|---|---|
| Sigurnost | 6,5 | 8,5 | +2,0 |
| Arhitektura | 7,5 | 8,0 | +0,5 |
| Kvaliteta koda | 7,0 | 7,5 | +0,5 |
| Kanon-usklađenost | 7,0 | 7,5 | +0,5 |
| GDPR | 4,0 | 7,0 | +3,0 |
| AI pipeline | 6,0 | 7,0 | +1,0 |
| Testovi | 1,0 | 6,5 | +5,5 |
| UI/UX | 6,5 | 6,5 | 0 |
| Podatkovni model | 7,0 | 6,5 | −0,5 |
| Pogon | 5,0 | 6,0 | +1,0 |
| Prosjek | 5,75 | 7,1 | +1,35 |
| Tvrdnja | Živi dokaz |
|---|---|
| Europski parser brojeva | 1.000,00 / 250,00 / 1.250,00 → net=1000.0 pdv=250.0 gross=1250.0 |
| Cross-tenant glas B | Tuđa firma na nov zapis: detalj 404, original 404, obje rute spaljivanja 404, lista 0 |
| PII u mirovanju | SQL: ocr_text=ENKRIPTIRANO, ai_summary=ENKRIPTIRANO, ključ 600 izvan baze |
| Rok čuvanja (Z28) | Nov dokument → retain_until=2037-07-25 (11 g.) automatski |
| Kanonski byte-pečat (Z54) | /pecat-provjera → stanje=OK, sadrzaj_ok=true — offline sha3 nad stvarnim bajtovima |
| Deterministička validacija | "net+pdv=gross OK (1000.00+250.00=1250.00)", pouzdanost 0,6 izvedena |
| Pošten AI failover (Z53) | Anthropic kvota mrtva → Groq shadow OK; vizualni AI pao → vizualno=False, nije lažirao uspjeh |
EU i NEW imaju isti hostname: ubuntu. Skripta genesis_local_backup.sh
(živa na NEW i MAR) imenuje dump po $(hostname) i rsynca ga na EU. Zato je na EU stajao svjež
genesis_ubuntu_*.sql.gz koji izgleda točno kao EU-ov backup — a to je NEW-ova baza,
koja arhiva-tablicu nema uopće. EU nije imao backup skriptu uopće.
Sudar imena = savršena kamuflaža. Svaka provjera „je li EU backupiran?" vraćala je DA. Zakon 53 (izgled nije dokaz) povrh Zakona 48 (Schrödingerov backup: signal na razini mehanizma, ne cilja). Ista klasa peti put.
Izloženost: EU je jedini čvor sa stvarnim dokumentima (5 redaka, 59 stupaca; MAR/DE: 0 redaka, 49). Gubio se cijeli Sloj-2 metasloj — tenant, faza, pečat, JIR/ZKI, rok čuvanja, validacija: tko čemu smije pristupiti i što je zapečaćeno. Sloj-1 bajtovi su bili sigurni (dokarh rsync EU→ES/NEW, 1,2 G = 1,2 G).
dump OK: genesis_eu_20260725_2137.sql.gz 17 619 744 B (lažni NEW-ov: 1 584 522 B)
rsync OK -> NEW (31.70.90.84)
rsync OK -> MAR (212.227.181.201)
VERIFY OK: entities=169 chain_blocks=728 arhiva_core=5 (= živo stanje)
health: {"node":"eu","stanje":"ok","arhiva_core":5,"udaljene_kopije":2}
Trostruka pohrana provjerena na odredištu, ne po izlazu rsynca:
MD5 108ed296c0b62933831665f80992e5a7 identičan na EU + NEW + MAR.
Tri namjerne razlike od NEW/MAR izdanja: NODE="eu" eksplicitno (ubija sudar imena
i sprječava da EU-ova retencija briše NEW-ove backupe iz dijeljenog direktorija) · samoverifikacija
broji i arhiva_core_dokumenti (Zakon 48 §2 — signal na razini cilja) ·
odredišta NEW + MAR = tri neovisne domene (Zakon 49).
| Izazvani kvar | Ishod |
|---|---|
| zdravo stanje | tišina, exit 0 |
| health ne postoji | ALARM „nikad nije potvrdio ishod (NEPOZNATO, ne 0)" |
health node="ubuntu" | ALARM „točno ovaj sudar imena je i bio puž" |
| health pokazuje na pravi NEW dump bez arhive | ALARM — čita sadržaj gzipa, ne ime datoteke |
| backup star 20 h (stvarno pomaknut mtime, prag 8 h) | ALARM „cron stao?" |
Detekcijska logika u testu bajt-identična produkcijskoj; zamijenjen je samo ponor alarma
da test ne pošalje lažni alarm Ivanu. Cron: backup 45 */6, stražar 20 7. Tišina = zdravo.
validacija.py / kripto.py / rag_prior.py postoje samo na EU.
MAR (produkcija) i DE vrte kod od 23.7. (MD5 e9f5f3… vs EU 8949da…, alembic dva koraka iza,
49 vs 59 stupaca) — dakle i dalje nose cross-tenant glas B rupu i nemaju enkripciju PII-ja.
Rizik danas nizak (0 redaka, rute 401), ali stanje „živa ruta + stari kod + nedefiniran status" je najgore od oboje.
Test-QR nosio &izn=1250.00; parser čita samo iznos ili i.
Rezultat: fiskalni_izvor=qr ✓, fiskalni_iznos=NULL ✗. Posljedično:
konsenzus_izvor="jedini" → „fiskal = veto" nikad ne opali (Ivanov ključni uvid)if fiskalno.get("iznos") → Redis nema nijedan zapis, nikad ništa nije izmjeriloPopravak ~5 linija. Uz to: validacija_json, ai_verified,
konsenzus_izvor, layer1_sha256 nisu u API serializeru (model 59 stupaca, API 33 polja) —
501 linija detektora halucinacija piše u bazu i tamo umire, korisnik je ne vidi. I OIB/IBAN checksum detektori
nikad ne opale jer se validacija zove bez tih argumenata, iako ih RAG u istoj funkciji točno izvuče.
Pitanje (Ivan): „popravi backup — u stvari trebamo trostruku pohranu — jesmo li to definirali, kako to da radimo?"
krunica_dvorac_sync.py::pohrani_async() vraća sve_ok + noge,
atomarno tri noge: KRUNICA (ChainBlock) + DVORAC (šifrirano) + BRŠLJAN (P2P).get_resolver().put() = jedna noga.
chain_blocks WHERE entitet_tip ILIKE '%arhiva%' → 0. KRUNICA i DVORAC noga prazne za svaki dokument.services/arhiva.py izvodi Z3 ručno, kroz odvojene
try/except koji pad gutaju kao warning — noga padne, poziv „uspije". Upozorenje već stoji zapisano u
arhiva_core/__init__.py; Faza 1 ga je svjesno odgodila i nitko se nije vratio po njega.Obavezna preporuka: pozvati get_trojna().pohrani_async() + assert sve_ok
na prijelazu faza=zapecaceno — jedino mjesto koje već drži bajtove i već izvodi kanonski byte-seal,
pa ne uvodi novi put pisanja nego dopunjuje postojeći.
Posljedica ako se ne uradi: dokument ima pečat u bazi i bajtove u DokArhu, ali nema dokaz postojanja u lancu — po Zakonu 46 (lanac → izraz) tvrdnja „zapečaćeno" tada nema kotvu u lancu, nego samo u bazi koja je do danas bila i nebackupirana.
Protu-dokaz (M6), prije trećeg glasa: ako pohrani_async sinkrono piše ChainBlock + Dvorac,
pečaćenje prestaje biti operacija od ~40 ms. Izmjeriti p95 POST /{wid}/faza {zapecati} prije/poslije na
20 uzoraka; preraste li ~500 ms, noge idu u pozadinu s obveznim readback-detektorom (ne „fire and forget"),
a sve_ok postaje uvjet za faza=zapecaceno, ne za HTTP odgovor.
Zakon 47 kategorija (mijenja put pisanja dokumenta) → čeka Ivanov AMEN. Backup popravak nije čekao jer je bio čisto aditivan i P0.
izn u QR parseru — oživljava fiskal-veto i mjerilo točnosti odjednomTočke 2–7 realno nose modul na 8,5–9. Preko 9 traži ono što se kodom ne zamjenjuje: ground-truth skup stvarnih računa kao CI-gate za AI, i prvi stvarni klijentski dokument. Do tada: vrlo discipliniran prototip, ne produkcijski sustav.
Ovaj zapis nije samo tvrdnja na stranici. Zapečaćen je i stoji na pet čvorova u različitim mrežama i kod različitih pružatelja — nijedan od njih nije nužan da bi se provjerio.
| čvor | poveznica za provjeru | pravi atom | izmišljen ID |
|---|---|---|---|
| EU | genesis.limit-connect.com/v/dd4e307174… | 200 autentično | 404 |
| ES | no-limit.world/v/dd4e307174… | 200 autentično | 404 |
| DE | sati.ink/v/dd4e307174… | 200 autentično | 404 |
| NEW | fina-connect.online/v/dd4e307174… | 200 autentično | 404 |
| MAR | limit-connect.com/v/dd4e307174… | 200 autentično | 404 |
Stupac „izmišljen ID“ nije ukras. Da svih pet čvorova vraća „autentično“ na bilo što, poveznica ne bi ništa značila. Zato se svaki provjerava i s izmišljenim brojem — i svaki mora reći ne.
Puni otisak: dd4e307174bc20716aaf39b957aca00b39d79341a144e84533d917e50304c283
Pošteno o vremenu: novi atom ne osvane na svih pet istog trenutka — izmjereno kašnjenje od pečaćenja do prvog udaljenog čvora bilo je oko 6 minuta. Prije toga udaljeni čvor odgovara 404, i to je točan odgovor, ne kvar.