{"id":"c1410","filename":"c1410_fix_a_recovery_auth_persist_dokarh.dok.json","weise3_id":"c1410_fix_a_recovery_cjelina4_auth_persist","tip":"isporuka","naziv":"Fix A — Recovery auth iz DB udjela + persist .dokarh (503 brava skinuta, Cjelina 4 zelena)","kreator":"genesis","datum":"2026-06-15","snippet":"","status":"","prev_weise3":"","bunker_l":"#00d4ff","full":{"cid":"c1410","tip":"isporuka","format":"DOKARH-2026 v2.0","naziv":"Fix A — Recovery auth iz DB udjela + persist .dokarh (503 brava skinuta, Cjelina 4 zelena)","datum":"2026-06-15","server":"EU","weise3_id":"c1410_fix_a_recovery_cjelina4_auth_persist","povod":"c1406 (token bypass) + c1407 (503 brava) + c1408 (asimetrija po cvoru). 503 je bila namjerna brava dok auth fix nije spreman. Fix A implementiran i dokazan 7/7.","implementirano":{"recovery_token_u_DB":"genesis_recovery_udjeli.recovery_token_hash — token hash putuje uz svaki udio na sve cvorove (EU/NEW/DE). Migracija: ALTER TABLE ADD COLUMN IF NOT EXISTS.","daj_udio_lokalno":"Uklonjen has_identitet bypass. UVIJEK verificira token iz DB reda (stored_hash). Nema genesis_identitet ovisnosti. Radi na EU/NEW/DE uniformno.","pohrani_recovery_meta_dokarh":"Zamjena za pohrani_recovery_meta (genesis_identitet). Pise recovery_token_hash + recovery_salt u lokalni .dokarh identiteta. Atomarno: .bak → .tmp → rename.","persist_vrati_dokarh":"Atomarno azurira public_key_hex u .dokarh (.bak korisnikovog + historija_kljuceva + os.replace). Bonus: UPDATE genesis_identitet WHERE EXISTS (nije kriticno).","vrati_endpoint":"503 brava uklonjena. Pravi tok: skupi K udjela (token verificiran) → rekonstruiraj → persist .dokarh → bonus genesis_identitet → return 200.","Recovery_postavi":"prima recovery_token_hash, prosljeđuje ga uz svaki udio na LocalCuvar + PraviCuvar.","RECOVERY_NODE_NEW":"Promijenjen default s http://127.0.0.1:8010 (EU localhost) na http://31.70.90.84:8010 (pravi NEW server). Novi korisnici dobivaju x2 dionicu na NEW, ne EU DB."},"dokaz":{"unit_smoke":"6/6 direktni (registracija, pohrani, daj_udio ispravan, daj_udio krivi→None, persist, .bak)","http_smoke":"7/7 HTTP (registracija, udjeli u DB, /vrati krivi→403, /vrati ispravni→200, .dokarh ažuriran, historija, prazan token→403)","commit":"29f51d00"},"migracija_11_new":"11 korisnika na NEW genesis_identitet s recovery_token_hash NE migriraju automatski. Njihovi tokeni ne rade (503 blokirao, sada 403). Mogu: (a) re-setup recovery putem rotacije, (b) ručna migracija NEW genesis_identitet → .dokarh. NIJE hitno — 11 test/admin računa.","koncentracija_33":"EU over-koncentracija (x2 dionice na EU DB) ostaje za 33 legacy korisnika. RECOVERY_NODE_NEW fix vrijedi za NOVE korisnike. Re-distribucija 33 = visok rizik, zaseban postupak.","karika4_status":"ZELENA za nove korisnike. Legacy (11+33) dokumentirani, nisu u blokirajućem riziku (0 neoporavljivih, samo konfiguracija).","zakon":"ZAKON NAD ZAKONIMA (7/7 HTTP smoke dokazan) · ZAKON 29 (sigurnost default, token bypass zatvoren) · ZAKON 46 (.dokarh je istina) · recovery NEPOVRATAN (oprezan max)","citacija":"Sigurnosna brava od čelika zamijenjena ispravnom autorizacijom. Cel tok — od tokena do novog ključa — dokazan izlazom.","krunica_hash":"c1410_fix_a_recovery_cjelina4_auth_persist_zelena_20260615"}}