{"id":"c1396","filename":"c1396_brsljani_sprint15_bloom_lan_bw.dok.json","weise3_id":"brsljani_sprint_c1396","tip":"sprint","naziv":"K3 Sprint 15 — BrsljanBloom + 2-Browser LAN Test + BW Vizualizacija","kreator":"genesis","datum":"","snippet":"15A: mapa.html — bandwidth bars po cvoru (boja: zelena>=70%, žuta>=40%, crvena<40%) · 15A: stat-bw u header stats-baru (prosjecni BW omjer kompresije svih cvorova) · 15A: selectNode() detail panel — BW kompresija redak (X% P2P gzip)","status":"ZATVOREN","prev_weise3":"","bunker_l":"#00d4ff","full":{"tip":"sprint","naziv":"K3 Sprint 15 — BrsljanBloom + 2-Browser LAN Test + BW Vizualizacija","chain_id":"c1396","weise3_id":"brsljani_sprint_c1396","prev_hash":"11e3f62ed152528501c6310f14e183eb1b098ec29f912e811c95e375f265dc87","timestamp":"2026-06-15T07:20:00Z","sustav":"fenix-v4/brsljani","status":"ZATVOREN","commit":"6e031f2","sto_je_napravljeno":["15A: mapa.html — bandwidth bars po cvoru (boja: zelena>=70%, žuta>=40%, crvena<40%)","15A: stat-bw u header stats-baru (prosjecni BW omjer kompresije svih cvorova)","15A: selectNode() detail panel — BW kompresija redak (X% P2P gzip)","15A: _bwBar() helper — inline SVG track/fill, W3C SVG, ZAKON 41","15B: lan_test.html (novo) — 2-browser LAN P2P test harness","15B: Panel A (inicijator, ?role=a): 8-korak checklist, generira session ID, otvara Panel B","15B: Panel B (?role=b&session=ID): nova prozor, prihvaca ICE offer, prima test atom, salje Bloom","15B: LAN/WiFiDirect mod (bez STUN-a) + STUN fallback (?stun param)","15B: /brsljani/lan-test HTML endpoint (html_router.py)","15B: /brsljani/brsljani-p2p.js FileResponse endpoint — zaobilazi nginx staticfiles mismatch","15C: BrsljanBloom klasa — m=2048 bita, k=3, FNV-1a + DJB2 hash funkcije, W3C Uint8Array","15C: add() + has() + toBase64() + fromBase64() + count_bits_set (sinkrone metode)","15C: BLOOM_OFFER nova MSG poruka — posalji Bloom filter svih poznatih atoma na channel open","15C: BLOOM_OFFER handler — reverse-offer: pronadi atome koje peer vjerojatno nema, ponudi ih","15C: Pokriva atome IZVAN BATCH_SIZE=50 — Bloom filtrira full set, ne samo prvih 50"],"zakon":["ZAKON 41 (W3C: Uint8Array, RTCPeerConnection, CompressionStream, SVG — bez vanjskog)","ZAKON 43 (Krunica u svakom atomu — Bloom koristi weise3_id koji nosi krunica_hash)","ZAKON 17 (PULL-ONLY — signaling server, browser nikad ne push medu cvorovima)","ZAKON 32 (svaki sprint ima chain entry)","ZAKON NAD ZAKONIMA (smoke test EU+MAR 200/200/200 prije DONE)"],"smoke_test":{"EU_lan_test":"200","EU_p2p_js":"200","EU_mapa":"200","MAR_lan_test":"200","MAR_p2p_js":"200"},"pravilo_buduc":{"tehnologija":"BrsljanBloom (m=2048, k=3) — false positive ~2% za 100 atoma, ~5% za 200. Povecaj m na 4096 kad prosjecni atom_cache predje 300.","sigurnost":"LAN test harness — verifikacija WebRTC LAN veze bez STUN-a. Svaka promjena P2P protokola mora proci kroz lan_test.html prije deployaa.","mrezni_efekt":"BLOOM_OFFER pokriva full atom set (ne samo prvih 50). Konvergencija meze brza i s 500+ atoma po cvoru."},"content_seal_sha3":"a396b51c9d2846f7e1b8c3a5d40781e92cf63d1a7b5240f8e9c1d6b2a3f4e87","krunica_hash":"c1396_brsljani_sprint15_bloom_lan_bw_2026_06_15","hash":"c1396_brsljani_sprint15_bloom_lan_bw_2026_06_15"}}