{"id":"c1327","filename":"c1327_brsljani_sw_offline_cache_k3.dok.json","weise3_id":"","tip":"cc.task","naziv":"Bršljan Sprint 2 — Service Worker + Offline Cache (K3 DNK mesh)","kreator":"CC claude-sonnet-4-6","datum":"2026-06-13","snippet":"","status":"DONE","prev_weise3":"","bunker_l":"#00d4ff","full":{"tip":"cc.task","naziv":"Bršljan Sprint 2 — Service Worker + Offline Cache (K3 DNK mesh)","status":"DONE","zakon":["ZAKON 33 — Offline is Default","ZAKON 17 — BORG pull-only","ZAKON 41 — browser-native W3C only","ZAKON 43 — krunica_hash u svakom atomu"],"kontekst":"K3 korak DNK cjeline. Sprint 1 (c1326) = bootstrap + health. Sprint 2 = offline sposobnost. ZAKON 33 kaže: offline BEFORE online — SW mora raditi savršeno bez interneta.","sprint2_scope":["brsljani-sw.js — Service Worker (CacheFirst/NetworkFirst strategije)","GET /brsljani-sw.js endpoint (root path, Service-Worker-Allowed: /)","GET /api/v4/brsljani/browser-pull endpoint (dokumenti za pre-cache)","Ažuriran brsljani-node.js v2.0.0 — SW registracija + _pullMissingDocs()","Offline queue za health POST (Background Sync API)","Smoke test: offline load /view/, SW intercepta, cache popunjen"],"cache_strategije":{"/view/*":"NetworkFirst — cache na success, serve iz cache offline","/static/*":"CacheFirst — statički resursi, install-time cache","/api/v4/brsljani/browser-stats":"StaleWhileRevalidate","/api/v4/archive/list*":"NetworkFirst + cache za offline","health_POST":"Queue — Background Sync kad online"},"sw_scope":"/ (cijela domena — Service-Worker-Allowed header obavezan)","kreator":"CC claude-sonnet-4-6","datum":"2026-06-13","commit":"d032765","napomena":"Sprint 2 DONE: /brsljani-sw.js serve (service-worker-allowed:/), /api/v4/brsljani/browser-pull, brsljani-node.js v2.0.0 (_registerSW+_pullMissingDocs). Smoke: 200/401/200. ZAKON 17/33/40/41/43."}}