{"id":"c1435","filename":"c1435_epic_korak3_rotacija.dok.json","weise3_id":"d2bbfb00a685006e76273b4171de766884b001e8d49b7d8f2dc9895f62beffa6","tip":"epic_korak","naziv":"Epic KORAK 3: rotacija dokarh-native (reuse persist_vrati_dokarh) — implementirana + dokazana (ES)","kreator":"cc@genesis","datum":"","snippet":"","status":"KORAK 3 GOTOVO na ES, dokazano. Ceka re-hash + Ivanov enter za EU.","prev_weise3":"","bunker_l":"#7cacff","full":{"tip":"epic_korak","broj":"c1435","naziv":"Epic KORAK 3: rotacija dokarh-native (reuse persist_vrati_dokarh) — implementirana + dokazana (ES)","kreator":"cc@genesis","kontekst":"rotacija_recovery_epic / korak3_rotacija_impl","created_at":"2026-06-21T06:43:47+00:00","veze":["c1432","c1433","c1434","c1436","c1421"],"jezgra":"rotacija_kljuca prepisana dokarh-native: cita TRENUTNI kljuc iz dokarh-a po weise3 (NE iz zahtjeva) -> verify potpis trenutnim kljucem (dokaz posjedovanja) -> persist_vrati_dokarh (atoman .tmp+rename, OVERWRITE public_key_hex) -> invalidacija sesija best-effort+log. CRVENA LINIJA drzana: genesis_auth.py genesis_identitet=0 psycopg2=0.","zakon47":"Brava drzana. ROLLBACK DOKAZAN 2x prije izmjena (perturb!=baseline -> restore==baseline -> servis ziv). baseline-assert na svakom write-u (B1 post-stub=04a4f2b9 -> post-impl=9d84cb3b). py_compile+rollback-on-fail. Stage 1a + gate-apply imali vlastite .bak; k3 vlastiti .bak.","atomicnost":"verify-PA-persist: neuspjeh potpisa -> 401, NISTA upisano (dokazano: dokarh netaknut nakon krive rotacije). persist self-atoman (history+key jedan dict, .tmp+rename OS-atomic). persist=commit-point; invalidacija sesija POSLIJE commit-a kao best-effort (glasan log ako padne, 200+warning NE 500 — ne moze se rollback-ati upisani kljuc).","forgery_jezgra_PUNI_HTTP_oba_workera":{"1_stari_kljuc":"stari K1 verify x4 -> 401,401,401,401 (gate odbija jer dohvati_identitet(stari)=None nakon overwrite)","2_novi_kljuc":"novi K2 verify x4 -> 200x4 + ISTI weise3 (identitet stabilan kroz rotaciju)","5_krivi_kljuc":"rotacija potpisana KRIVIM (napadacevim) kljucem -> 401 + dokarh NETAKNUT (verify cita kljuc iz dokarh, ne iz zahtjeva)","DOKAZ_B":"sesija starog kljuca ubijena (session_in_redis=False nakon rotacije), inval_sesija=1","anti_replay":"ts +-60s; replay unutar prozora NE-iskoristiv (nakon 1. rotacije trenutni kljuc=K2, replayani K1-potpis pada protiv K2)"},"biom_3_4_STO_JEST_I_STO_NIJE":"Uvjeti (3)/(4) dokazani store-level + strukturno (biom credovi u Redis db=1, rotacijina invalidacija sesija u db=4 — odvojeni keyspace-ovi; cred BYTE-IDENTICAN prije/poslije prave rotacije; dohvati_uredjaje(W2)=0 -> biom keyan po weise3). Puni WebAuthn assertion round-trip NIJE izvrsen — blokiran c1421 Membrana per-worker decoy (ortogonalan rotaciji, zaseban bug). Rotacijin efekt na biom = DOKAZAN NE-lomi; biom auth-put-validnost = NIJE ovdje testirana (pre-epic funkcionalnost, izvan opsega).","puz_trag_IZMJEREN_benigan":"Nasi forgery-testovi (namjerni neuspjesi) ostavili: genesis:puz:ip:127.0.0.1 attempts=0 (NEZAKLJUCAN) + ~8 orphan genesis:puz:pubkey:* (throwaway test-kljucevi), svi TTL<24h samo-isteku. NIJEDAN stvarni/vanjski IP zakljucan. sudac_middleware.py:495-497 IZUZIMA localhost iz rate-limitera -> lokalni testovi nisu ni mogli teretiti obranu za stvarni promet. Odluka: PUSTITI da decay-a, ne dirati mehanizam (write na obrambeni sloj radi tidiness = rizik>korist kad TTL to rijesi besplatno).","metodoloski_dodatak":"U disciplinu koraka (uz rollback-dokaz): svaki test s namjernim neuspjesima UNAPRIJED racuna localhost-exempt status + broj Puz-unosa + throwaway-vs-stvarni-IP. Mjeri se, ne blokira.","raspored_dokazne_tezine":"Jezgra rotacije (sto epic MIJENJA) = 5 ponasajnih uvjeta puni HTTP oba workera. Biom (sto NE diramo) = store-level+strukturno. Dokazna tezina proporcionalna riziku promjene — inzenjerski balans, ne kompromis.","stanje_mreze":"KORAK 1 (gate) + KORAK 3 (rotacija) SAMO na ES. EU NETAKNUT (original genesis_auth.py + mrtva postgres grana). Prije EU: re-hash ES<->EU mora pokazati razliku=tocno gate+rotacija, nula drugog.","sljedece":"re-hash ES<->EU -> STANI za Ivanovu presudu prije EU deploya (produkcija = zaseban enter).","status":"KORAK 3 GOTOVO na ES, dokazano. Ceka re-hash + Ivanov enter za EU.","weise3_id":"d2bbfb00a685006e76273b4171de766884b001e8d49b7d8f2dc9895f62beffa6"}}