{
 "at": "2026-10-18T03:47:08.445Z",
 "dan": "2026-10-18",
 "git": "4a7a0fb",
 "ukupno": {
  "modula": 189,
  "uKrugu": 77,
  "zakazano": 11,
  "testirano": 133,
  "bezOpisa": 0,
  "rucno": 81
 },
 "testovi": {
  "ukupno": 171,
  "palo": 0,
  "proslo": 171,
  "suite": [
   {
    "ime": "testovi",
    "modul": "dodaci/testovi.mjs",
    "dokaz": "dokaz-testovi-2026-10-18.json",
    "ukupno": 58,
    "proslo": 58,
    "palo": 0,
    "dan": "2026-10-18"
   },
   {
    "ime": "testovi-jedinice",
    "modul": "dodaci/testovi-jedinice.mjs",
    "dokaz": "dokaz-testovi-2026-10-18.json",
    "ukupno": 58,
    "proslo": 58,
    "palo": 0,
    "dan": "2026-10-18"
   },
   {
    "ime": "test-objava-tok",
    "modul": "dodaci/test-objava-tok.mjs",
    "dokaz": "dokaz-objava-tok-2026-10-18.json",
    "ukupno": 35,
    "proslo": 35,
    "palo": 0,
    "dan": "2026-10-18"
   },
   {
    "ime": "test-repo-tok",
    "modul": "dodaci/test-repo-tok.mjs",
    "dokaz": "dokaz-repo-tok-2026-10-18.json",
    "ukupno": 20,
    "proslo": 20,
    "palo": 0,
    "dan": "2026-10-18"
   }
  ],
  "sekcije": 5,
  "izvor": [
   "dokaz-testovi-2026-10-18.json",
   "dokaz-testovi-2026-10-18.json",
   "dokaz-objava-tok-2026-10-18.json",
   "dokaz-repo-tok-2026-10-18.json"
  ]
 },
 "krug": null,
 "slojevi": {
  "1 · ULAZ I MerenjA": {
   "modula": 22,
   "krug": 20,
   "zakazano": 1,
   "test": 22,
   "fajlovi": [
    {
     "rel": "analitika.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "KORAK 07:20 — PRAVI BROJEVI (Search Console + GA4 + AI referral)",
     "kb": 5.3
    },
    {
     "rel": "dodaci/asov.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "ASOV % (AI share of voice): koliko se MI pominjemo u AI odgovorima prema konkurenciji.",
     "kb": 23.5
    },
    {
     "rel": "dodaci/brzina.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "PageSpeed Insights / Core Web Vitals za sve sajtove (BESPLATNO uz PAGESPEED_API_KEY)",
     "kb": 5.3
    },
    {
     "rel": "dodaci/cf-analitika.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "Cloudflare analitika (BESPLATNO): ko stvarno dolazi, koji AI botovi, koji 404",
     "kb": 5.8
    },
    {
     "rel": "dodaci/docroot.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "ProverA ZIVE PUTANJE (docroot) za svaki domen: gde se fajl STVARNO servira.",
     "kb": 2.8
    },
    {
     "rel": "dodaci/ga4-provjera.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "da li GA4 STVARNO radi na sajtu (bez browsera)",
     "kb": 3
    },
    {
     "rel": "dodaci/ga4-strane.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "KOLIKO PROMETA IDE NA KOJU STRANU (da prioritet bude po parama, ne po redu)",
     "kb": 2.8
    },
    {
     "rel": "dodaci/geo.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "GEO (Generative Engine Optimization): da li nas AI asistenti MOGU da čitaju i citiraju",
     "kb": 11.8
    },
    {
     "rel": "dodaci/ghost-demand.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "GHOST DEMAND: potražnja koju GSC NE VIDI, a AI je vidi.",
     "kb": 18.1
    },
    {
     "rel": "dodaci/hosting-procesi.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "NADZOR LIMITA NA HOSTINGERU (procesi + THREADOVI) pre nego SSH umre.",
     "kb": 4.1
    },
    {
     "rel": "dodaci/indeks.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "POVRATNA SPREGA: sta Google STVARNO kaze za nase strane (URL Inspection API)",
     "kb": 6.9
    },
    {
     "rel": "dodaci/konkurencija.mjs",
     "krug": false,
     "zakazano": true,
     "test": true,
     "opis": "nedeljni diff sitemapa (BESPLATNO): šta je NOVO kod nas i kod konkurencije.",
     "kb": 3.9
    },
    {
     "rel": "dodaci/linkovi.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "UNUTRAŠNJI LINKOVI, ORPHAN STRANE I PREDLOG LINKOVA (ono što nijedno merenje ne vidi)",
     "kb": 8.5
    },
    {
     "rel": "dodaci/logovi.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "CRAWL LOGOVI: ko stvarno dolazi, šta Google traži, gde se baca budžet",
     "kb": 5.7
    },
    {
     "rel": "dodaci/oko.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "MAŠINA GLEDA SAJT: snimak ekrana + vizuelna provera (bez ijednog vanjskog programa)",
     "kb": 9.1
    },
    {
     "rel": "dodaci/onpage.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "MerenjE SAME STRANE: canonical, noindex, meta opis, H1, JSON-LD (+ da li canonical pokazuje na sebe).",
     "kb": 10.2
    },
    {
     "rel": "dodaci/pitanja.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "Google autocomplete + PAA harvesting (BESPLATNO, bez ključa).",
     "kb": 4.4
    },
    {
     "rel": "dodaci/schema-valid.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "VALIDACIJA STRUKTURIRANIH PODATAKA (ne samo \"ima li ih\", nego \"da li valjaju\")",
     "kb": 7.3
    },
    {
     "rel": "dodaci/sitemap.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "OTKRIVANJE: prijava sitemapa u Google Search Console (i pregled statusa)",
     "kb": 6.4
    },
    {
     "rel": "dodaci/www.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "DETEKCIJA www/bez-www duplikacije (i predlog 301 preusmjerenja).",
     "kb": 6.5
    },
    {
     "rel": "planner.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "KORAK 06:00 — PLAN DANA: koje strane se danas mere (ulaz za snimak/mozak/fabriku)",
     "kb": 4.4
    },
    {
     "rel": "snimak.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "KORAK 06:10 — SNIMA STANJE svake strane iz plana (polazna linija za poređenje)",
     "kb": 4.5
    }
   ]
  },
  "OSTALO": {
   "modula": 105,
   "krug": 25,
   "zakazano": 4,
   "test": 50,
   "fajlovi": [
    {
     "rel": "db.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "baza za FULL VIDLJIVOST (SQLite)",
     "kb": 5.4
    },
    {
     "rel": "deploy.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "stvarna objava popravke na sajt (SSH/SFTP) + provera",
     "kb": 9
    },
    {
     "rel": "dodaci/adr-strana.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "pravi javnu HTML verziju ADR-01 (odluka o izolaciji klijenata) za /agentguard/adr-01.html.",
     "kb": 4.4
    },
    {
     "rel": "dodaci/agentguard-demo.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "AGENTGUARD DEMO NA STVARNIM PODACIMA (ništa se ne izmišlja).",
     "kb": 17.3
    },
    {
     "rel": "dodaci/agentguard-izvjestaj.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "IzveštAJ PO AGENTU: koliko je pokušao, šta je zaustavljeno, zašto, ko je odobrio.",
     "kb": 6.2
    },
    {
     "rel": "dodaci/agentguard-odobrenja.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "RED ZA ODOBRENJE: akcija koju agent ne smije sam čeka ČOVJEKA.",
     "kb": 10.4
    },
    {
     "rel": "dodaci/agentguard-omotac.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "OMOTAČ (SDK): tuđi agent radi kroz NAŠA vrata, u 5 linija koda.",
     "kb": 3.6
    },
    {
     "rel": "dodaci/agentguard-politika.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "POLITIKA ZA AGENTE: šta agent smije sam, šta mora da čeka čovjeka, šta je STOP.",
     "kb": 5.9
    },
    {
     "rel": "dodaci/agentguard-scenariji.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "7 ZLATNIH SCENARIJA za JEDAN tip agenta (refund agent) + RUNNER.",
     "kb": 7.3
    },
    {
     "rel": "dodaci/ai-citati-trend.mjs",
     "krug": true,
     "zakazano": false,
     "test": false,
     "opis": "AI CITATION FREQUENCY kroz dane (5. GEO stub: trend, ne jedan prolaz)",
     "kb": 5
    },
    {
     "rel": "dodaci/ai-citati-tudji.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "AI VIDLJIVOST ZA TUĐI DOMEN (bez ijednog ključa klijenta).",
     "kb": 20
    },
    {
     "rel": "dodaci/ai-citati.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "5. GEO STUB: **AI citation frequency** (da li nas AI asistenti citiraju)",
     "kb": 23.9
    },
    {
     "rel": "dodaci/analitika-oko.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "P5: ANALITIKA čita šta je OKO vidjelo (+ ostale artefakte) i pravi OBIMAN izveštaj.",
     "kb": 8.8
    },
    {
     "rel": "dodaci/auto-restart.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "mašina SAMA diže servis koji je pao — ali samo po strogim pravilima.",
     "kb": 4.3
    },
    {
     "rel": "dodaci/cuvar-canonical.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "ČUVAR KANONIKALA: nijedna naša strana ne smije imati canonical van svog domena.",
     "kb": 5.4
    },
    {
     "rel": "dodaci/cuvar-vram.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "ČUVAR GRAFIČKE MEMORIJE: nađe i skloni ZAGLAVLJENE `llama-server` procese.",
     "kb": 6.6
    },
    {
     "rel": "dodaci/dokaz-audit.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "Primer AUDIT IzveštAJA (ono što kupac dobije za 49 €)",
     "kb": 19.3
    },
    {
     "rel": "dodaci/dokaz-botovi.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "TEST PRISTUPA AI BOTOVIMA: da li tuđi sajt pušta GPTBot, ClaudeBot, PerplexityBot…",
     "kb": 17.4
    },
    {
     "rel": "dodaci/dokaz-changelog.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "CHANGELOG NA ENGLESKOM iz stvarne istorije (dokaz pisane komunikacije)",
     "kb": 8.5
    },
    {
     "rel": "dodaci/dokaz-koraka.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "P6: ProverA SVAKOG KORAKA objavljene popravke na živom sajtu.",
     "kb": 5.1
    },
    {
     "rel": "dodaci/dokaz-provera.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "ČUVAR JAVNOG PAKETA: nijedna tajna ne smije izaći u `dokaz/`",
     "kb": 4.4
    },
    {
     "rel": "dodaci/dokaz-pseo-mjerenje.mjs",
     "krug": true,
     "zakazano": false,
     "test": false,
     "opis": "MerenjE pSEO OBJAVE: dnevni snimak + tabela pre/posle za 21 dan",
     "kb": 7.2
    },
    {
     "rel": "dodaci/dokaz-repo.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "SKLAPA JAVNI REPO (`full-vidljivost-dokaz`) iz ODOBRENIH delova",
     "kb": 19.5
    },
    {
     "rel": "dodaci/dokaz-strana.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "DOKAZNA STRANA ZA KLIJENTA: `/proof/<domen>` sa TAČNIM brojkama.",
     "kb": 9.1
    },
    {
     "rel": "dodaci/dokaz-sve.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "JEDAN DOKUMENT SA SVIH ProverA (dodato 08.10.2026 na zahtjev: „radi sve provere i pravi dokaze\")",
     "kb": 11.8
    },
    {
     "rel": "dodaci/geo-alat.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "GRADNJA MINI-ALATA „GEO self-check\" (statički HTML, radi bez servera i bez ključa)",
     "kb": 18.7
    },
    {
     "rel": "dodaci/greske.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "UČENJE IZ SOPSTVENIH GREŠAKA: uzrok → pravilo → provera pre objave.",
     "kb": 6.2
    },
    {
     "rel": "dodaci/gtm-konverzije.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "KONVERZIJE KAO DOGAĐAJI (GA4 Measurement Protocol, server-side)",
     "kb": 6.2
    },
    {
     "rel": "dodaci/hostinger-mcp.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "HOSTINGER MCP: veza mašine sa hostingom (domeni, DNS, deploy, e-mail, VPS).",
     "kb": 12.7
    },
    {
     "rel": "dodaci/ishod.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "LANAC ISHODA: popravka → potvrđeno → INDEKSIRANO → CITIRANO (+ blokatori).",
     "kb": 6.3
    },
    {
     "rel": "dodaci/izvjestaj-149.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "DUBINSKI IzveštAJ (paket 149 €): jedan samostalan HTML za klijenta.",
     "kb": 37.2
    },
    {
     "rel": "dodaci/izvjestaj-pdf.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "DUBINSKI IzveštAJ ZA KLIJENTA U PDF-u (ono što se šalje i štampa).",
     "kb": 5.7
    },
    {
     "rel": "dodaci/izvjestaj.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "JEDAN PREGLEDAN IzveštAJ: slika sajta + ključni sken + analitika + AI vidljivost + botovi.",
     "kb": 34.5
    },
    {
     "rel": "dodaci/javni-cuvar.mjs",
     "krug": false,
     "zakazano": true,
     "test": true,
     "opis": "ČUVAR JAVNIH STATIKA: proveri da li su objavljene strane ŽIVE i vrati ih ako su pale.",
     "kb": 8.1
    },
    {
     "rel": "dodaci/klijenti-kljucevi.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "DOKAZ IZOLACIJE: koji Google ključ radi za koga",
     "kb": 6.1
    },
    {
     "rel": "dodaci/konkurencija-upiti.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "KONKURENCIJA PO KLJUČNIM RečIMA („kome gubiš poziciju\")",
     "kb": 15.5
    },
    {
     "rel": "dodaci/kontrola-pokrivenosti.mjs",
     "krug": true,
     "zakazano": false,
     "test": false,
     "opis": "KONTROLA KOJA PITA „DA LI JE POSAO UOPŠTE URAĐEN\"",
     "kb": 8.8
    },
    {
     "rel": "dodaci/memorija.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "PITAJ MEMORIJU PRVO, A LEKCIJU UPIŠI SAMO POSLE POTVRDE.",
     "kb": 7.1
    },
    {
     "rel": "dodaci/mini-alat.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "MINI-ALATI ZA SAOBRAĆAJ („find and create mini-tools that drive traffic\")",
     "kb": 8.3
    },
    {
     "rel": "dodaci/nadzor-prozora.mjs",
     "krug": true,
     "zakazano": false,
     "test": false,
     "opis": "da li 21-dnevni prozor STVARNO ima podatke za svaki dan",
     "kb": 4.1
    },
    {
     "rel": "dodaci/nocno-znanje.mjs",
     "krug": false,
     "zakazano": true,
     "test": false,
     "opis": "NOĆNA OBRADA ZNANJA (#5): saberi šta je dan uradio, pretvori u lekcije i pošalji roju.",
     "kb": 6.9
    },
    {
     "rel": "dodaci/objava-bezbjedno.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "SIGURNA OBJAVA (privremeni alat, pokreće se RUČNO kad se nešto ubacuje)",
     "kb": 11.8
    },
    {
     "rel": "dodaci/objava-javno.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "PRIPREMA JAVNOG PAKETA ZA OBJAVU (ništa ne objavljuje samo!)",
     "kb": 49.7
    },
    {
     "rel": "dodaci/objava-live.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "JEDAN POTEZ ZA OBJAVU + MerenjE (radi SAMO kad korisnik kaže \"objavi\")",
     "kb": 8.2
    },
    {
     "rel": "dodaci/objavi-paket.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "OBJAVA CelOG PAKETA na domen (uz proveru svakog fajla i rollback)",
     "kb": 11.1
    },
    {
     "rel": "dodaci/objavi-pseo.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "OBJAVA pSEO STRANA na domen (u pravu strukturu, sa sitemap-om)",
     "kb": 11.4
    },
    {
     "rel": "dodaci/panel.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "PANEL MAŠINE: jedan samostalan HTML (bez servera, bez interneta) sa stvarnim brojkama,",
     "kb": 31.1
    },
    {
     "rel": "dodaci/popravi-tag.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "ZamenA TAGA NA ŽIVOJ STRANI (statični sajtovi): backup → upis → provera → rollback.",
     "kb": 9.8
    },
    {
     "rel": "dodaci/pozicije.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "PRAĆENJE POZICIJA KROZ Vreme (dodato 08.10.2026)",
     "kb": 11.4
    },
    {
     "rel": "dodaci/pozovi-agenta.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "MAŠINA TRAŽI POMOĆ kad joj nešto padne (dodato 08.10.2026)",
     "kb": 12.3
    },
    {
     "rel": "dodaci/proof-dnevno.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "dnevni korak za javnu DOKAZ stranu (`/proof/` na nomorequiet.com).",
     "kb": 6.4
    },
    {
     "rel": "dodaci/provera-sheme.mjs",
     "krug": true,
     "zakazano": false,
     "test": false,
     "opis": "Pre KRUGA: koliko modula je pokriveno (i da li se nešto POKVARILO)",
     "kb": 4
    },
    {
     "rel": "dodaci/provjeri-canonical-po-jeziku.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "verifikacija koju je korisnik tražio (08.10.2026):",
     "kb": 1.4
    },
    {
     "rel": "dodaci/provjeri-hostinger-mcp.mjs",
     "krug": true,
     "zakazano": false,
     "test": false,
     "opis": "OVLAŠĆENA ProverA Hostinger MCP veze (za dnevni/nedeljni krug).",
     "kb": 2.2
    },
    {
     "rel": "dodaci/provjeri-instalaciju.mjs",
     "krug": true,
     "zakazano": false,
     "test": false,
     "opis": "„ŠTA MAŠINA TRAŽI OD RAČUNARA\" (za instalaciju kod klijenta)",
     "kb": 10
    },
    {
     "rel": "dodaci/provjeri-izvor.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "KORAK 1 PROCEDURE: proveri koji je izvor ŽIV pre nego što bilo šta diraš.",
     "kb": 7.1
    },
    {
     "rel": "dodaci/provjeri-jezik-pseo.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "AUDIT: jezik TEME vs jezik koji strana deklariše.",
     "kb": 4.9
    },
    {
     "rel": "dodaci/pseo-generator-en.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "ENGLESKA programska potražnja → strana (isti kvalitet kao SR, EN tržište)",
     "kb": 16.6
    },
    {
     "rel": "dodaci/pseo-generator.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "PROGRAMMATIC SEO: 50+ strana iz šablona (pipeline, ne članci jedan po jedan)",
     "kb": 14.4
    },
    {
     "rel": "dodaci/radnik-sam.mjs",
     "krug": false,
     "zakazano": true,
     "test": false,
     "opis": "SAMOSTALNI RADNIK: mašina uzima sopstvene poslove iz reda i radi ih BEZ čovjeka.",
     "kb": 7.1
    },
    {
     "rel": "dodaci/radnik.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "P2: izvršava poslove iz reda JEDAN PO JEDAN i upisuje artefakte + SHA256.",
     "kb": 10
    },
    {
     "rel": "dodaci/registruj-hub-mjerenje.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "registracija HUB strana u merenje (clean URL)",
     "kb": 2.5
    },
    {
     "rel": "dodaci/ritam.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "RITAM PO KORAKU: koji nalaz se STVARNO menja iz ciklusa u ciklus.",
     "kb": 4.4
    },
    {
     "rel": "dodaci/roj-dnevnik.mjs",
     "krug": true,
     "zakazano": false,
     "test": false,
     "opis": "P6: ROJ u dnevnom krugu — JEDAN zapis šta je roj uradio i šta je ZAPAMTIO.",
     "kb": 5.2
    },
    {
     "rel": "dodaci/roj-posao.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "DNEVNI POSAO ZA ROJ (da ne vrcka gossip u prazno).",
     "kb": 6.8
    },
    {
     "rel": "dodaci/samopoboljsanje.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "MAŠINA PREDLAŽE I MerI SOPSTVENE IzmenE (i vraća ih ako naškode).",
     "kb": 8.7
    },
    {
     "rel": "dodaci/samovrednovanje.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "MAŠINA SAMA OCJENJUJE SVOJ RAD (i loše vraća u red).",
     "kb": 6
    },
    {
     "rel": "dodaci/satnica.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "EVIDENCIJA SATI I NAPLATE PO KLIJENTU (ono što ide u fakturu).",
     "kb": 7.3
    },
    {
     "rel": "dodaci/scrape-intent.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "INTENT SIGNALI I WARM LEADOVI (scraping + enrichment, bez plaćenih ključeva)",
     "kb": 8.9
    },
    {
     "rel": "dodaci/sentiment.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "KAKO NAS AI OPISUJE (ton odgovora), ne samo da li nas pominje.",
     "kb": 6.6
    },
    {
     "rel": "dodaci/sitemap-hub.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "SITEMAP ZA JAVNI DOKAZ (`/full-vidljivost/`) + prijava u robots.txt i GSC",
     "kb": 6.4
    },
    {
     "rel": "dodaci/slide-izvjestaj.mjs",
     "krug": true,
     "zakazano": false,
     "test": false,
     "opis": "5 SLAJDOVA umjesto .md fajla (KMC traži „slide-based reports\")",
     "kb": 12.6
    },
    {
     "rel": "dodaci/slika-html.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "ŽIVA „KOMPLETNA SLIKA MAŠINE\" (HTML se puni iz JSON-a, ne iz snimka)",
     "kb": 22.9
    },
    {
     "rel": "dodaci/slika-masine.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "KOMPLETNA SLIKA MAŠINE (jedan dokument, iz stvarnih podataka)",
     "kb": 12.2
    },
    {
     "rel": "dodaci/slika-server.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "mali lokalni server za ŽIVU „Kompletnu sliku mašine\"",
     "kb": 2.4
    },
    {
     "rel": "dodaci/snimak.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "SNIMAK STANJA SAJTA pre izmene: vizualni dokaz + build ID + commit + sadržaj.",
     "kb": 14
    },
    {
     "rel": "dodaci/status-masina.mjs",
     "krug": false,
     "zakazano": true,
     "test": false,
     "opis": "P1: proveri sve mašine iz registra (port + health + proces) i upiši dokaz.",
     "kb": 5.6
    },
    {
     "rel": "dodaci/status-strana.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "JAVNA STATUSNA STRANA KLIJENTA (`/status/` na njegovom domenu).",
     "kb": 8.3
    },
    {
     "rel": "dodaci/testovi-jedinice.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "PRAVI TESTOVI PONAŠANJA (lokalno, bez ijednog zahtjeva prema živim sajtovima)",
     "kb": 19.5
    },
    {
     "rel": "dodaci/trosak.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "POLITIKA TROŠKA: šta ide LOKALNO ($0), a šta na cloud (plaćeno) + dokaz da je poštovana.",
     "kb": 8.8
    },
    {
     "rel": "dodaci/uskladi-brojke.mjs",
     "krug": true,
     "zakazano": false,
     "test": false,
     "opis": "jedan potez: novi snimak mašine → uskladi broj modula u dokumentima i stranama →",
     "kb": 4.1
    },
    {
     "rel": "dodaci/vrati-backup.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "RUČNI ROLLBACK: vrati ŽIVU stranu na stanje iz najnovijeg serverskog backup-a.",
     "kb": 2.3
    },
    {
     "rel": "dodaci/vrati-pages.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "VRAĆANJE tabele `pages` iz `onpage` i `indeks`",
     "kb": 2.9
    },
    {
     "rel": "dodaci/zakrpe-spoji.mjs",
     "krug": true,
     "zakazano": false,
     "test": false,
     "opis": "HIGIJENA REDA: spaja DUPLIKATE popravki (P4).",
     "kb": 4.1
    },
    {
     "rel": "fv-status.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "mali lokalni servis za DSH Centar (tab „FULL VIDLJIVOST\")",
     "kb": 7.7
    },
    {
     "rel": "ga4.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "Google Analytics 4 (service account nmq-eyes) — PRAVI saobraćaj",
     "kb": 6.3
    },
    {
     "rel": "gauth.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "Google autentifikacija preko SERVICE ACCOUNT-a (nmq-eyes), bez ikakvih paketa.",
     "kb": 3.4
    },
    {
     "rel": "gbp.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "Google Business Profile / Ask Maps provera",
     "kb": 4.9
    },
    {
     "rel": "gsc.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "Google Search Console (service account nmq-eyes) — PRAVI podaci",
     "kb": 3.6
    },
    {
     "rel": "http.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "zajednički HTTP + HTML alati (snimak, merenje, objava)",
     "kb": 2.9
    },
    {
     "rel": "instaliraj-masinu.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "JEDAN ALAT KOJI POSTAVI CelU MAŠINU (#7: kalup za svaku sledeću mašinu).",
     "kb": 10.5
    },
    {
     "rel": "koji-projekat.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "za svaki AIzaSy ključ: kojem Google projektu pripada + šta je uključeno",
     "kb": 2.5
    },
    {
     "rel": "lib/gtm.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "KONVERZIJE (GTM/GA4) + plan praćenja. Bez izmišljanja: što se ne može izmeriti — kaže se.",
     "kb": 6.5
    },
    {
     "rel": "lib/jezici-portal.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "lib/jezici-portal.mjs — JEZIK PORTALA (log strana koju klijent gleda). Osnova: EN.",
     "kb": 6.8
    },
    {
     "rel": "lib/jezici-sabloni.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "lib/jezici-sabloni.mjs — JEZIČKI PAKETI za pSEO stranu: sav tekst OKVIRA na jednom mestu.",
     "kb": 12.6
    },
    {
     "rel": "lib/jezik.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "lib/jezik.mjs — JEZIK SAME TEME, ne okvira strane.",
     "kb": 4.8
    },
    {
     "rel": "lib/objava-wp.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "CMS ADAPTERI: WordPress (REST) i Webflow. „No manual uploads.\"",
     "kb": 5.4
    },
    {
     "rel": "lib/odluka-restart.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "ČISTA funkcija: smije li se mašina restartovati?",
     "kb": 1.2
    },
    {
     "rel": "lib/pokrivenost.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "POKRIVENOST MODULA (jedan izvor istine za shemu i za proveru)",
     "kb": 12.7
    },
    {
     "rel": "lib/popravi-tag.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "popravi-tag.mjs (lib) — ČISTA logika za zamenu/dodavanje taga u strani.",
     "kb": 3.5
    },
    {
     "rel": "lib/rotacija.mjs",
     "krug": true,
     "zakazano": false,
     "test": false,
     "opis": "lib/rotacija.mjs — ROTACIJA MerenjA AI CITATA (9 dana: 8 jezika + pauza; jedan jezik po danu).",
     "kb": 3.3
    },
    {
     "rel": "lib/uporedi-stanja.mjs",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "ČISTA funkcija: poredi dva merenja mašina i vraća listu promena.",
     "kb": 0.7
    },
    {
     "rel": "lib/vidljivost.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "lib/vidljivost.mjs — KAKO SE BREND POJAVLJUJE: konkurencija (share of voice) i okvir opisa.",
     "kb": 11.5
    },
    {
     "rel": "qa-gate.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "KORAK 06:30  (vrednost mašine 02 — ANALYTICS)",
     "kb": 6.5
    },
    {
     "rel": "uvoz-u-bazu.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "uzima izvoz sa VPS-a (JSON: clients, pages, fixes, citations, runs)",
     "kb": 2.3
    }
   ]
  },
  "5 · DOKAZ I KONTROLA": {
   "modula": 12,
   "krug": 11,
   "zakazano": 0,
   "test": 12,
   "fajlovi": [
    {
     "rel": "dodaci/arhiva.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "PRAVNI DOKAZ Pre OBJAVE: HTML + SHA256 + tar za strane koje cekaju objavu (--ceka)",
     "kb": 9.8
    },
    {
     "rel": "dodaci/citation-lock.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "CITATION LOCK: da li si JOŠ citiran, i šta stoji na putu da ostaneš.",
     "kb": 24.6
    },
    {
     "rel": "dodaci/fv-stanje.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "kratko JSON stanje masine (za dnevni pregled): klijenti, strane, popravke po statusu",
     "kb": 1.8
    },
    {
     "rel": "dodaci/manifest.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "JEDAN IZVOR ISTINE: otisak (md5) svih fajlova mašine + šta se promenilo.",
     "kb": 3
    },
    {
     "rel": "dodaci/oko-diff.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "Pre/Posle U SLIKAMA + JEDNA REČENICA ZA KLIJENTA",
     "kb": 6.2
    },
    {
     "rel": "dodaci/popravi-objavu.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "tri popravke u jednom hodу:",
     "kb": 5.7
    },
    {
     "rel": "dodaci/provjeri-objavljeno.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "DOKAZ: da li je \"objavljeno\" STVARNO na živom sajtu",
     "kb": 6.7
    },
    {
     "rel": "dodaci/testovi.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "TESTOVI MAŠINE (bez mreže, bez baze, ~1 sekunda)",
     "kb": 16.5
    },
    {
     "rel": "dodaci/trend.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "TRENDOVI I ALARMI NA PAD (ono što merenja pretvara u odluku)",
     "kb": 8.3
    },
    {
     "rel": "dodaci/zdravlje.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "SAMOPROVJERA MAŠINE: da li su svi delovi tu, da li su koraci sveži i gde je granica.",
     "kb": 7.2
    },
    {
     "rel": "dokaz.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "KORAK 07:30  (VrednOST KOJU KLIJENT PLAĆA)",
     "kb": 7.6
    },
    {
     "rel": "nadzor.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "BLOKADA #1: „da nešto ne stoji satima a da niko ne zna\"",
     "kb": 13.5
    }
   ]
  },
  "3 · RADNICI (ko piše)": {
   "modula": 5,
   "krug": 4,
   "zakazano": 0,
   "test": 5,
   "fajlovi": [
    {
     "rel": "dodaci/alati.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "MAŠININI ALATI: SEO/GEO poslovi koje mašina radi SAMA (bez vanjskih programa)",
     "kb": 7.9
    },
    {
     "rel": "dodaci/kod-queue.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "OD NALAZA DO KODA: priprema i isporuka kod-popravki",
     "kb": 33
    },
    {
     "rel": "dodaci/ollama-alati.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "ALATI ZA LOKALNI MODEL: on NE UME sam da pozove alat, pa ga zove harness u njegovo ime.",
     "kb": 18.7
    },
    {
     "rel": "dodaci/radnici.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "BAZEN RADNIKA: mašina bira najboljeg izvođača za posao",
     "kb": 10.7
    },
    {
     "rel": "fabrika.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "KORAK 06:40 — PISE POPRAVKU za svaku rupu koju nadje mozak.mjs (lokalna Ollama, $0)",
     "kb": 11.9
    }
   ]
  },
  "6 · IzveštAJI I PORTAL": {
   "modula": 9,
   "krug": 7,
   "zakazano": 2,
   "test": 9,
   "fajlovi": [
    {
     "rel": "dodaci/dnevnik.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "DNEVNIK RADA U MAŠINI (šta je mašina uradila, kada i zašto — bez PC-a)",
     "kb": 4
    },
    {
     "rel": "dodaci/klijent.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "PORTAL ZA KLIJENTA: jedna strana po sajtu (ono što se naplaćuje)",
     "kb": 13.6
    },
    {
     "rel": "dodaci/lanac.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "DOKAZ DA LANAC RADI (naših 5 sajtova) → Telegram + reports/lanac-<dan>.md",
     "kb": 11.3
    },
    {
     "rel": "dodaci/mjesecni.mjs",
     "krug": false,
     "zakazano": true,
     "test": true,
     "opis": "MesečnI IzveštAJ (HTML, za klijenta / za prodaju mašine)",
     "kb": 9.1
    },
    {
     "rel": "dodaci/nedjeljni.mjs",
     "krug": false,
     "zakazano": true,
     "test": true,
     "opis": "NedeljNI IzveštAJ (7 dana: šta se popravilo, šta raste, šta pada)",
     "kb": 6.2
    },
    {
     "rel": "dodaci/posalji-izvestaj.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "šalje izveštaj mejlom (bez dodatnih paketa: sopstveni SMTP klijent).",
     "kb": 8.2
    },
    {
     "rel": "dodaci/telegram-dnevni.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "TAČNO Dve PORUKE DNEVNO: jedna pozitivna, jedna negativna",
     "kb": 12.6
    },
    {
     "rel": "dodaci/zavrsni-izvjestaj.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "JEDAN IzveštAJ: SEO + GEO + analitika + automatika (skor po sajtu)",
     "kb": 11.9
    },
    {
     "rel": "izvestaj.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "KORAK 07:40  (ONO ŠTO KLIJENT PLAĆA)",
     "kb": 7.7
    }
   ]
  },
  "4 · OBJAVA (izlaz na sajt)": {
   "modula": 11,
   "krug": 3,
   "zakazano": 1,
   "test": 11,
   "fajlovi": [
    {
     "rel": "dodaci/hosting-build.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "DEPLOY RUKA ZA HOSTINGER (zvanični API) + zaštita od ispada",
     "kb": 7.3
    },
    {
     "rel": "dodaci/indexnow.mjs",
     "krug": false,
     "zakazano": true,
     "test": true,
     "opis": "besplatno gura URL-ove u Bing/Yandex (i ostale IndexNow partnere).",
     "kb": 5.7
    },
    {
     "rel": "dodaci/localbusiness.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "LocalBusiness / Organization schema (JSON-LD) za lokalne klijente.",
     "kb": 2.8
    },
    {
     "rel": "dodaci/localbusiness2.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "puni LocalBusiness schema podacima IZVUČENIM IZ SAJTA (bez ikakvog API-ja):",
     "kb": 3.8
    },
    {
     "rel": "dodaci/napravi-sitemap.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "napravi sitemap.xml (i robots.txt ako fali) za domen bez sitemape.",
     "kb": 4.8
    },
    {
     "rel": "dodaci/objava-paket.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "paketna objava popravki (status 'ceka') uz filter, dedup, proveru i rollback.",
     "kb": 8.4
    },
    {
     "rel": "dodaci/objava-sa-dokazom.sh",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "OBJAVA SA PRAVNIM DOKAZOM",
     "kb": 1.7
    },
    {
     "rel": "dodaci/preflight.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "Pre objave: sta se STVARNO moze objaviti, a sta ne (i zasto).",
     "kb": 5.9
    },
    {
     "rel": "dodaci/premesti-u-head.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "POPRAVKA: premesti NMQ-FIX blokove sa canonical/meta iz <body> u <head>.",
     "kb": 3.6
    },
    {
     "rel": "kontrola.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "KORAK 07:00  (BLOKADA #2 — da se tuđi sajt NIKAD ne sruši)",
     "kb": 5.2
    },
    {
     "rel": "objava.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "KORAK 07:10  (objava popravki + IndexNow)",
     "kb": 9.3
    }
   ]
  },
  "2 · MOZAK (odluka)": {
   "modula": 6,
   "krug": 5,
   "zakazano": 1,
   "test": 6,
   "fajlovi": [
    {
     "rel": "dodaci/modeli.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "REGISTAR LOKALNIH MODELA: koji model za koji posao (sve naše, sve $0)",
     "kb": 7.5
    },
    {
     "rel": "dodaci/onpage-prioritet.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "MASINSKI PRIORITET ON-PAGE PROBLEMA (bez nagadjanja)",
     "kb": 5.3
    },
    {
     "rel": "dodaci/prioritet.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "RANG LISTA POSLA: sta prvo raditi, po UTICAJU (ne po redu u bazi).",
     "kb": 11.3
    },
    {
     "rel": "dodaci/radnici-nadzor.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "NE DA SE KRUG ZAUSTAVI zbog modela",
     "kb": 4.8
    },
    {
     "rel": "mozak.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "KORAK 06:20 — NADJE RUPE na svakoj strani (lokalna pravila, BEZ AI = $0 i trenutno)",
     "kb": 5.4
    },
    {
     "rel": "radar.mjs",
     "krug": false,
     "zakazano": true,
     "test": true,
     "opis": "stalno (5 min nedeljno ručno + automatska provera)",
     "kb": 5.9
    }
   ]
  },
  "7 · TEMELJ (lib + baza + okruženje)": {
   "modula": 12,
   "krug": 0,
   "zakazano": 0,
   "test": 11,
   "fajlovi": [
    {
     "rel": "dodaci/postavi-ollama.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "POSTAVKA LOKALNOG AI: koji model radi, koji alati smiju, i dokaz da model stvarno radi.",
     "kb": 8.7
    },
    {
     "rel": "lib/db.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "baza za FULL VIDLJIVOST (SQLite)",
     "kb": 5.4
    },
    {
     "rel": "lib/deploy.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "stvarna objava popravke na sajt (SSH/SFTP) + provera",
     "kb": 13.1
    },
    {
     "rel": "lib/ga4.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "Google Analytics 4 (service account nmq-eyes) — PRAVI saobraćaj",
     "kb": 7.4
    },
    {
     "rel": "lib/gauth-multi.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "KLJUČEVI PO KLIJENTU (spremno za više klijenata bez restarta)",
     "kb": 4.2
    },
    {
     "rel": "lib/gauth.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "Google autentifikacija preko SERVICE ACCOUNT-a (nmq-eyes), bez ikakvih paketa.",
     "kb": 4.2
    },
    {
     "rel": "lib/gbp.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "Google Business Profile / Ask Maps provera",
     "kb": 4.9
    },
    {
     "rel": "lib/gsc.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "Google Search Console (service account nmq-eyes) — PRAVI podaci",
     "kb": 4
    },
    {
     "rel": "lib/http.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "zajednički HTTP + HTML alati (snimak, merenje, objava)",
     "kb": 5
    },
    {
     "rel": "lib/provere.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "ČISTE ProverE (bez mreže i bez baze) — jedno mesto, testabilno",
     "kb": 9.6
    },
    {
     "rel": "lib/uvoz-u-bazu.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "uzima izvoz sa VPS-a (JSON: clients, pages, fixes, citations, runs)",
     "kb": 7.5
    },
    {
     "rel": "run-krug.sh",
     "krug": false,
     "zakazano": false,
     "test": false,
     "opis": "FULL VIDLJIVOST — dnevni krug na VPS-u (radi SVAKI DAN, i vikendom).",
     "kb": 22.9
    }
   ]
  },
  "8 · ROJ (naša mašina uči)": {
   "modula": 4,
   "krug": 1,
   "zakazano": 0,
   "test": 4,
   "fajlovi": [
    {
     "rel": "dodaci/komandna-vrata.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "Vrata kroz koja ROJ traži posao od mašine: imenovane komande, bez shell-a, sa dokazom.",
     "kb": 19.6
    },
    {
     "rel": "dodaci/roj-kb-ukljuci.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "PREKIDAČ za bazu znanja roja: da lekcije uđu u roj, a ne da stoje lokalno.",
     "kb": 9.4
    },
    {
     "rel": "dodaci/roj-stanje.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "ROJ JE Deo NAŠE MAŠINE (ne tuđi servis)",
     "kb": 14.3
    },
    {
     "rel": "dodaci/roj-ucenje.mjs",
     "krug": false,
     "zakazano": false,
     "test": true,
     "opis": "MAŠINA UČI ROJ (dodato 08.10.2026: „stavi da robotici uče, moj roj je spreman\")",
     "kb": 20.2
    }
   ]
  },
  "9 · UPRAVNIK (glava: pazi i vodi)": {
   "modula": 3,
   "krug": 1,
   "zakazano": 2,
   "test": 3,
   "fajlovi": [
    {
     "rel": "dodaci/upravnik-cuvar.mjs",
     "krug": false,
     "zakazano": true,
     "test": true,
     "opis": "SAMOISCVJELJENJE: ako nešto od automatike stane, ovaj modul ga sam digne.",
     "kb": 15.3
    },
    {
     "rel": "dodaci/upravnik-zadatak.mjs",
     "krug": false,
     "zakazano": true,
     "test": true,
     "opis": "upis UPRAVNIKA u Windows zadatke (svakih 5 min), po istom uzorku kao NMQ-FV-Nadzor.",
     "kb": 9
    },
    {
     "rel": "dodaci/upravnik.mjs",
     "krug": true,
     "zakazano": false,
     "test": true,
     "opis": "JEDAN lokalni AI koji stalno pazi na računar, alate, programe, potrošnju i vodi posao.",
     "kb": 93
    }
   ]
  }
 }
}