← DokArh Portal
dnk_unifikacija

KORAK 2 — Identitet unifikacija: jedan kanon, auto-rpId prekidač, offline build-flag

Kreator: genesis Datum: 2026-06-12 Status: DONE
WeisE3™ ID: (nema)
tipdnk_unifikacija
statusDONE
master_planMASTER_PLAN_dnk_cjelina (Korak 2 od 5)
dijagnoza_2_osi{ "os1_offline": "static/sucelje imaju offline (verifyEd25519Offline+vault), sdk/genesislogin/fenix nemaju", "os2_webauthn_mod": "DIREKTNI (same-domain: static/sucelje/fenix) vs RELAY-popup (cross-domain: sdk/genesislogin) — biom-relay.html jer WebAuthn vezan za rpId", "nijedan_fajl_nadskup": "static ima offline+direktni ali NE relay → 'kanon=static' bi slomio cross-domain biometriju" }
ispravak_pretpostavki[ "Nalog rekao kanon=sdk → POGRESNO (sdk je podskup, fali 6 offline funkcija)", "Faza A preporuka kanon=static → NEPOTPUNO (static nema relay)", "Istina: kanon = UNIJA (static.offline + sdk.relay), prekidač bira mod" ]
odluka_ivanOpcija B — samootkrivajući rpId iz server options-odgovora. Sef (.env GENESIS_RP_ID) OSTAJE ZATVOREN. Server=izvor istine, ne hardcode.
izvedeno{ "kanon": "static/genesis-auth.js = UNIJA (full: prekidač + offline)", "prekidac": "registerDevice + device.login: _rpId iz options-odgovora (register→opcije.rp.id, auth→opcije.rpId), location.hostname===rpId || endsWith('.'+rpId) ? direktni() : relay()", "grane_bajt_iste": "direktni()=static verbatim, relay()=sdk verbatim — ekstrakcija slice-ova, ne pretipkavanje", "offline": "build-flag @profile:offline (2 trailing IIFE), online profil = kanon bez njega", "generator": "scripts/build
dokaz_faza_c{ "a_grane_bajt_iste": "4/4 (registerDevice+login × direktni+relay) == zivi static/sdk", "b_prekidac_reproducira_mod": "genesis→direktni, fenix/limit-connect→direktni, genesislogin/tuda→relay (svaki = trenutni mod, 0 promjene ponasanja)", "c_load_smoke": "full+online parse OK, core API 5/5, struktura exporta identicna zivom static", "d_offline_kripto_netaknut": "verifyEd25519Offline+vault bajt-isti (150 linija) — kripto NE diran", "rpId_data_level": "probe cita rpId tocno gdje server v
deploy{ "full_402e1979": [ "static", "sucelje" ], "online_967afa72": [ "sdk", "genesislogin", "fenix-v3" ], "netaknuti_namjenski": [ "tahograf (vlastiti Ed25519 device-flow)", "memio (bezkriptni thin client)" ], "konvergencija": "7 razlicitih md5 → 2 profila iz 1 kanona + 2 namjenski lite", "backup": "*.bak_20260612 (svih 5)", "dozvole": "www-data:www-data" }
rezidual_postenZivi browser login test po proizvodu = preostala ljudska provjera (Chrome MCP nije spojen). Staticki dokaz (grane bajt-iste + prekidac reproducira mod) zamjenjuje ga po dogovoru Ivan. Rollback: *.bak_20260612.
sljedeceKORAK 3 — Mesh ozivljavanje (genesis-mesh.js P2P, telefon↔telefon bez sidra)
zakonZAKON 32 | ZAKON 40 (GenesisLogin jedini IdP) | crvena linija: zivi login nigdje slomljen