{"id":"c1434","filename":"c1434_epic_korak2_dead_branch.dok.json","weise3_id":"faff10da48adffb1073db5ee9d1467e5fd54bd16645a763ce58d11a70d02593d","tip":"epic_korak","naziv":"Epic KORAK 2: mrtva postgres grana uklonjena iz /rotacija -> 501-stub (ES). Crvena linija fizicki neprekrsiva.","kreator":"cc@genesis","datum":"","snippet":"","status":"KORAK 2 GOTOVO na ES, dokazano (rollback + 501 + grep 0/0 + gate intact). Ceka Ivanovu presudu za KORAK 3.","prev_weise3":"","bunker_l":"#8cd55c","full":{"tip":"epic_korak","broj":"c1434","naziv":"Epic KORAK 2: mrtva postgres grana uklonjena iz /rotacija -> 501-stub (ES). Crvena linija fizicki neprekrsiva.","kreator":"cc@genesis","kontekst":"rotacija_recovery_epic / korak2_delete_dead_branch","created_at":"2026-06-21T05:35:46+00:00","veze":["c1432","c1433"],"izvedba_odluka":"501-STUB (Ivan: NE atoman 2+3 — razdvojene presude/rollback/c-zapis; nema vremenskog pritiska). Cijelo tijelo rotacija_kljuca zamijenjeno strukturiranim 501 (FastAPI HTTPException -> JSON {detail}).","pre_checks":"SDK NE zove /rotacija (static/genesis-auth.js + sdk/ — 0 poziva) -> 501 nije frontend ovisnost. nginx NE presrece 5xx (nema proxy_intercept_errors/error_page 50x) -> strukturiran JSON 501 stize do klijenta. 501 (ne 503): iskrena poruka 'not implemented', ne 'privremeno palo'.","zakon47":"Brava drzana. B0 (post-gate)=fd8c10547733c778. ROLLBACK DOKAZAN PRIJE izmjene (perturb!=B0 -> restore==B0 -> servis ziv). Prva verzija stuba imala 2 'genesis_identitet' u VLASTITOM docstringu (objasnjenje) -> grep!=0 -> ROLLBACK na B0 (dokazano: grep vracen na original 8/3) + RE-APPLY token-free docstring -> grep=0.","promjena":"api/genesis_auth.py: AST-zamjena tijela rotacija_kljuca. Uklonjeno: inline psycopg2 import+connect (1371-74, 1468-69), SELECT javni_kljuc FROM genesis_identitet (1382), UPDATE genesis_identitet x2 (1415, 1474), invalidacija sesija, bg Shamir. Ostavljeno: dekorator + signatura + RotacijaUlaz model (Korak 3 reuse). baseline-assert(B0) prosao. post-sha=04a4f2b993c26655.","dokaz":"genesis_auth.py: genesis_identitet=0 psycopg2=0 (crvena linija: NULA tokena u auth-odlucnom fajlu -> nemoguce zalijepiti verify na genesis_identitet, grep ne moze zbuniti). /rotacija POST -> HTTP 501 + {detail strukturiran}. gate (Korak1) netaknut: nepoznat verify -> 401. servis active, 8010=401.","POZNATI_NAMJERNI_OSTACI":{"napomena":"Nakon Koraka 2 grep genesis_identitet po cijelom kodu jos vraca 3 mjesta — SVA namjerno ostavljena, NIJEDNO nije auth-odlucni put. NIJE propust.","1_recovery_vrati_bonus":"genesis_recovery.py:251 UPDATE genesis_identitet — best-effort 'bonus' (try-guarded, 'nije dio Fix A auth'), vlastiti inline psycopg2. OSTAJE za KORAK 4 (recovery) — ne diramo genesis_recovery.py dok ne dodjemo na recovery (cista granica: Korak 2 = samo genesis_auth.py).","2_health_probe":"zdravlje_servisi.py:60/84 SELECT genesis_identitet (health probe, fallback na 'entities'). Monitoring, NE auth. PARK: kad se grana potpuno napusti, ukloniti probe na nepostojecu tablicu (inace dashboard moze lazno crveniti za namjerno mrtvu tablicu).","3_legacy_alter":"recovery.py:215 ALTER TABLE genesis_identitet (IF EXISTS guarded, legacy NEW migracija). Ne auth, bezopasno. Ostaje."},"stanje_mreze":"KORAK 2 samo na ES. EU NETAKNUT (i dalje ima mrtvu postgres granu + 503). Prije prijenosa na EU: re-hash ES<->EU (jedina razlika = gate + stub).","bak_higijena_TODO":"ES genesis_auth.py sad ima .bak lanac: gate, gateapply, k2stub, k2apply, k2apply2. ISPRAVNO tijekom epica (svaki korak reverzibilan). ZADNJI KORAK EPICA: arhiviraj/dokumentiraj .bak lanac + otpusti bravu — da produkcijski auth fajl ne zavrsi okruzen .bak-ovima nejasnog porijekla.","sljedece":"KORAK 3 (na poseban Ivanov enter): implementiraj rotacija_kljuca dokarh-native = reuse persist_vrati_dokarh, ATOMARNO (verificiraj-stari-kljuc-potpis PA upisi-ili-nista) + forgery-test 3 uvjeta (stari->401, novi->200+isti weise3, biom registriran-prije-rotacije i dalje radi-poslije).","status":"KORAK 2 GOTOVO na ES, dokazano (rollback + 501 + grep 0/0 + gate intact). Ceka Ivanovu presudu za KORAK 3.","weise3_id":"faff10da48adffb1073db5ee9d1467e5fd54bd16645a763ce58d11a70d02593d"}}