tipkorak_dokaz
brojc1441
kontekstidentitet/recovery/korak4 / atlas_organa / bice_vs_odijelo
created_at2026-06-21T14:01:04+00:00
veze[
"c1432",
"c1435",
"c1437",
"c1438",
"c1440"
]
jezgraCisti kod (ukloni mrtvu granu) PA dokazi da recovery JOS stiti i da identitet ostaje isto bice kroz promjenu kljuca. 'Gotovo'=pokazano (VRHOVNI). recovery.py genesis_recovery.py konvergirani byte-identicno (sha f980ae5a) neovisnom istom transformacijom na oba cvora.
1_tech_clean{
"fajl": "api/genesis_recovery.py",
"baseline_sha": "3c361e73a336ef4b...",
"target_sha": "f980ae5a1ca5a4f6314c3a4c0c041fcf4e4617d44d58c6492db7d94aa6eee7dc",
"uklonjeno": "try-blok 'Bonus: UPDATE genesis_identitet' (psycopg2, mrtva NEW-only grana, nije Fix A auth) + 2 zastarjela docstring spomena",
"crvena_linija": "0 izvrsnih psycopg2/UPDATE genesis_identitet u fajlu; recovery NE pise u postgres identity store (.dokarh je istina, ZAKON 46)",
"disciplina": "ZAKON 47 brava + baseline-
2_forgery_dokaz_oba_cvora{
"P1_prag": "podijeli(S,3,2): bilo koja 2 udjela obnove S, 1 udio NE obnovi (Shamir threshold stiti) — TRUE EU+ES",
"P2_token": "verificiraj_recovery_token: tocan->True, kriv/prazan->False (const-time, fail-closed) — TRUE EU+ES",
"P3_smrt_starog_service": "nakon persist_vrati_dokarh(w3,pk_new): stari_pk->dohvati=None(MRTAV), novi_pk->ZIV isti weise3 — TRUE EU+ES",
"P4_http_live": "LIVE /auth/verify: novi kljuc->200 (weise3==w3), STARI kljuc->401 (c1432 gate), bez Sudac-diverzije — TRUE
3_marica_koherencija_4od4{
"1_dokarh": "weise3_id NEPROMIJENJEN, public_key_hex PROMIJENJEN, stari u historiji — TRUE",
"2_authz_dokarh": "pristup_tenantima + marker prezivjeli recovery u dokarhu (keyed po weise3) — TRUE",
"3_sesija": "stara sesija invalidirana recoveryjem, novi login veze ISTI weise3 — TRUE",
"4_biom": "device record (store-level, db=1) prezivio recovery, keyed po weise3 ne po kljucu — TRUE (assertion-level blokiran c1421 Membrana)",
"verdikt": "4/4 organa slijede isti weise3 nakon recovery —
4_NALAZ_authz_osoba_pubkey_keyed{
"nalaz": "MJERENO: session tenant_scope (osoba-sloj) vadi se preko aliases['pubkey:{pk}'] u genesis_auth.py (verify) — PUBKEY-keyed, NE weise3-keyed.",
"posljedica": "Nakon recovery/rotacije kljuca, korisnik s osoba-tenant pristupom LOGINA (weise3 stabilan) ali tenant_scope bi bio prazan dok se alias 'pubkey:{novi_pk}' ne azurira. dokarh-atributi (keyed po weise3) prezive; osoba-alias sloj NE.",
"klasa": "ista obitelj kao rotacija 'dodaje-ne-mice' (vidi project_rotacija_opoziv_defekt). N
5_granica_reverzibilnost{
"fluid_auth_nedirano": "containment (c1439) netaknut; genesis_auth.py i FLUID nedirani ovim korakom",
"anchors": ".bak.k4* zadrzani na oba cvora (rollback na 3c361e moguc)",
"blast_radius_testa": "1 test identitet po cvoru, potpuno ociscen (cleanup_verify: dokarh_obrisan=True, novi_pk->nista=True, errors=[])"
}
statusGOTOVO — pokazano da radi (VRHOVNI). EU+ES, cisti kod, forgery 5/5 + Marica 4/4, errors=[].