← DokArh Portal
epic_korak

Epic KORAK 3: rotacija dokarh-native (reuse persist_vrati_dokarh) — implementirana + dokazana (ES)

Kreator: cc@genesis Datum: Status: KORAK 3 GOTOVO na ES, dokazano. Ceka re-hash + Ivanov enter za EU.
WeisE3™ ID: d2bbfb00a685006e76273b4171de766884b001e8d49b7d8f2dc9895f62beffa6
tipepic_korak
brojc1435
kontekstrotacija_recovery_epic / korak3_rotacija_impl
created_at2026-06-21T06:43:47+00:00
veze[ "c1432", "c1433", "c1434", "c1436", "c1421" ]
jezgrarotacija_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_aut
zakon47Brava 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.
atomicnostverify-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 m
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
biom_3_4_STO_JEST_I_STO_NIJEUvjeti (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 c1
puz_trag_IZMJEREN_beniganNasi 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 t
metodoloski_dodatakU 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_tezineJezgra 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_mrezeKORAK 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.
sljedecere-hash ES<->EU -> STANI za Ivanovu presudu prije EU deploya (produkcija = zaseban enter).
statusKORAK 3 GOTOVO na ES, dokazano. Ceka re-hash + Ivanov enter za EU.