{"id":"c0883","filename":"c0883_master_log_20260516_brsljani_dedup.dok.json","weise3_id":"","tip":"SESIJA_LOG","naziv":"Sesija 2026-05-16 DIO 4+5 — Master log: Bršljan peer dedup na svim čvorovima mreže","kreator":"CC-Sonnet","datum":"2026-05-16","snippet":"","status":"","prev_weise3":"","bunker_l":"#00d4ff","full":{"tip":"SESIJA_LOG","naziv":"Sesija 2026-05-16 DIO 4+5 — Master log: Bršljan peer dedup na svim čvorovima mreže","datum":"2026-05-16","autor":"CC-Sonnet","chain_ref":"c0875 (master sesija log za DIO 1-3), c0881 (EU+MAR fix), c0882 (NEW+DE fix)","kontekst":"Nastavak sesije 2026-05-16. Identificiran i riješen sistemski bug u gossip protokolu Bršljan mreže: peer tablica imala 21 unos umjesto 4 zbog nedostajuće deduplikacije po base_url. Fix primijenjen na sve aktivne genesis čvorove: EU, NEW, DE, MAR, ES. HEL preskočen (gasi se 2026-05-20).","problem_i_uzrok":{"simptom":"Svaki čvor imao 21 peer (11x v4.limit-connect.com browser widgeti, 2x pwa://, HTTP duplikati, stale IP-based čvorovi)","uzroci":["BUG-1 (KRITIČAN): dodaj_peer keyirao isključivo po agent_id — browser widget svaki put dobija novi agent_id → 11 unosa za isti URL","BUG-2 (VISOK): pwa:// browser-only čvorovi upisivani u P2P gossip tablicu (nisu HTTP genesis čvorovi)","BUG-3 (VISOK): BOOTSTRAP_CVOROVI sadržavao https://v4.limit-connect.com i https://limit-connect.com — browser widgeti kao bootstrap","BUG-4 (KRITIČAN): _ucitaj_persistirane_peere koristio direktni self._peers[id] = peer — zaobilazi SVE filtere. Stale peeri se perpetuiraju kroz svaki restart"]},"fix_3_sloja":{"SLOJ_1":{"naziv":"dodaj_peer dedup po base_url","sto":"Ako peer s istim base_url postoji (ali različit agent_id) → ažuriraj postojeći, ne dodaj novi","fajl":"services/brsljani.py","skripta":"/tmp/fix_brsljani_dedup.py"},"SLOJ_2":{"naziv":"pwa:// i HTTP→HTTPS filteri","sto":"pwa:// odbijen odmah; HTTP peer odbijen ako HTTPS verzija već postoji u _peers","fajl":"services/brsljani.py","skripta":"/tmp/add_http_filter.py"},"SLOJ_3_bootstrap":{"naziv":"BOOTSTRAP_CVOROVI cleanup","sto":"Uklonjen v4.limit-connect.com i limit-connect.com; ostaju samo pravi genesis Python čvorovi","novi_bootstrap":["https://genesis.limit-connect.com","https://fina-connect.online","https://sati.ink","https://grosmarkt-online.eu/brsljani"],"skripta":"/tmp/fix_bootstrap.py"},"SLOJ_3_disk_load":{"naziv":"_ucitaj_persistirane_peere filter pri loadu","sto":"seen_urls set + isti filteri kao dodaj_peer — stale peeri se ne učitavaju s diska","skripta":"/tmp/fix_load_peers_mar.py"}},"primijenjeno_na_cvorovima":{"EU":{"ip":"217.160.71.124","commits":["59b61b6","6cebd0f","5bc9a03","f1e2933"],"peers_prije":21,"peers_poslije":4,"metoda":"git commit (kanonski repozitorij)"},"NEW":{"ip":"31.70.90.84","peers_prije":21,"peers_poslije":4,"metoda":"direktno na filesystem (nema git na čvoru)"},"DE":{"ip":"31.70.82.227","peers_prije":21,"peers_poslije":4,"metoda":"direktno na filesystem"},"MAR":{"ip":"212.227.181.201","peers_prije":21,"peers_poslije":4,"metoda":"direktno na filesystem"},"ES":{"ip":"212.227.146.133","peers_prije":"nepoznato (pristup prethodno blokiran)","peers_poslije":4,"metoda":"direktno na filesystem (SSH genesis_master ključ radio — lozinka nije bila potrebna)","napomena":"Pristup potvrđen 2026-05-16, genesis_master ključ funkcionalan"},"HEL":{"status":"PRESKOČEN — gasi se 2026-05-20"}},"finalno_stanje_mreze":{"EU":{"peers":4,"ok":true},"NEW":{"peers":4,"ok":true},"DE":{"peers":4,"ok":true},"MAR":{"peers":4,"ok":true},"ES":{"peers":4,"ok":true},"legitimni_peeri_svi_cvorovi":["https://grosmarkt-online.eu/brsljani","https://fina-connect.online","https://genesis.limit-connect.com","https://sati.ink"]},"memorija_spasena":["memory/project_brsljani_dedup_2026_05_16.md — fix log + arhitekturalna lekcija","memory/project_brsljani_ideje_2026_05_16.md — 6 ideja za gossip protokol","memory/reference_server_architecture.md — azuriran s brsljani peer status + ES pristup potvrđen"],"istaknute_ideje":["IDEJA-1: BORG Health Map na no-limit.world — živa karta mreže, wow 10/10","IDEJA-2: PWA peers → zasebni _browser_peers registar","IDEJA-3: Auto-healing Celery Beat task (svakih 6h)","IDEJA-4: Peer reputacija score (rolling 7d, auto-uklanjanje ispod 0.3)","IDEJA-5: Gossip protocol versioning"],"arhitekturalna_lekcija":"Gossip protokoli MORAJU imati 3 sloja čišćenja: (1) pri primitku — dodaj_peer(), (2) pri loadu s diska — _ucitaj_persistirane_peere(), (3) periodički — Beat task. Direktni dict assignment u load funkciji zaobilazi sve filtere i perpetuira smeće kroz restartove zauvijek.","chain_entries_sesije_DIO_4_5":["c0881 — EU+MAR brsljani dedup fix (3 sloja)","c0882 — NEW+DE brsljani dedup + ideje + memorija","c0883 — master log DIO 4+5 + ES fix (ovaj)"],"open_threads":["ES: genesis_master ključ radi — ažurirati CLAUDE.md (stajalo 'nema ključa s EU servera')","BORG Health Map (IDEJA-1) — implementirati na no-limit.world","PWA peers zasebni registar (IDEJA-2)","Auto-healing Beat task (IDEJA-3)","MAR: /borg/health.json → 404 — ZAKON 17 compliance gap (stari open thread)"],"zakoni":["ZAKON 17 — BORG pull-only, peer tablica čista na svim čvorovima — SADA ISPUNJENO (5/5)","ZAKON 32 — svaki fix ima chain entry"]}}