vreme čitanja: 10 minutes

foundry/— funkcionalna zona koja hostuje kod mog radnog prostora — Sadrži 18 projekata. Osam su open source pod Apache 2.0. Jedno je closed source — SaaS Edster. Mesecima, ovih devet projekata nije se sukobalo. у истом фасциклу, раздвојени само…​ ништа. њихов јавни/приватни статус Bila je informacija u mojoj glavi, ne u sistemu fajlova.

И онда желех да увезам RAG. И онде, све је рушило.

Незгода која је чекала да се десни

У april 2026, почео да имплементујем RAG pgvector за slider-gradle. Princip: indeksirati sve depozitorije`foundry/, производити неких embeddings, da ih ubačimo u kontekst LLM-a da bi imao perception" akta`foundry/.

Cevovod je bio jednostavan:

val repos = fileTree(rootDir) {
    include("**/*.adoc", "**/*.kts", "**/*.kt", "**/*.json", "**/*.yml")
}
val chunks = repos.map { chunk(it) }
val embeddings = chunks.map { embed(it) }
pgvector.insert(embeddings)

Jednostavno. Efikasno. Iопасан.

Пошто ова`fileTree`не прави разлику између`plantuml-gradle/` (Apache 2.0, javno) i`edster/`(closed source, private). On sve požera. Ako jednom objavim ove embedde — na dashboard-u, u odgovoru LLM u datasetu za treniranje — vlasnički kod Edster izlješće.

Problem nije u tome da LLM čita zatvorenog izvornog koda. Problem, To je da ovaj kod završi u vektorskom embeddingu public — необратно, необрисливо, неаудитуемо.

Право питање

Ovo nije "kak sprečiti LLM da izlije kod?". To je "kak Направити побег структурно nemoguћ?

Odgovor nije prompt. Odgovor je da se fascikla podeli na dva dela.

Rešenje: OSS/ i CSS/

Pre :

foundry/
├── plantuml-gradle/       ← public
├── bakery-gradle/         ← public
├── magic-stick/           ← public
├── edster/                ← PRIVÉ
├── slider-gradle/         ← public
└── ...                    ← mélange invisible

Posle :

foundry/
├── OSS/                   ← tout est Apache 2.0
│   ├── plantuml-gradle/
│   ├── bakery-gradle/
│   ├── magic-stick/
│   ├── slider-gradle/
│   └── ...
└── CSS/                   ← tout est closed source / private
    └── edster/

Le `fileTree`постаје :

val ossRepos = fileTree(File(rootDir, "OSS")) {
    include("**/*.adoc", "**/*.kts", "**/*.kt", "**/*.json", "**/*.yml")
}
val cssRepos = fileTree(File(rootDir, "CSS")) {
    include("**/*.adoc", "**/*.kts", "**/*.kt", "**/*.json", "**/*.yml")
}

// Embeddings publics — OSS seulement
pgvectorPublic.insert(ossRepos.map { chunk(it) }.map { embed(it) })

// Dataset fine-tuning privé — CSS seulement
fineTuningDataset.insert(cssRepos.map { chunk(it) })  // jamais publié

Javni RAG nikad ne vidi`CSS/`. Zatvoreni kod pokreće skup podataka bez finetuniranja — unutrašnji model koji nikada ne napušta moj dom. La razdvajnje je mehaničko, ne deklarativno.

Zašto "OSS" i "CSS" a ne "javno" i "privatno

Izbor akronima OSS (Open Source Software) i CSS (Closed Source Software) Намерно:

  • Public"/"Private" opisujevidljivost(šta GitHub vidi)

  • OSS"/"CSS" opisujeприrodakoda (što LLM mora da zna)

GitHub vidljivost je metapodatak udaljenog repozitorijuma. Priroda koda je svojstvo sadržaja. LLM nema pristup GitHub API — ali ima pristup sistemu datoteka.CSS/`Mu je rekao "Pažnja, ovaj kod nije pod licencom slobodno" bez potrebe da pročitate`LICENSE`ili da se parsira jedan`package.json.

Naziv fascikle je najjači metapodatak koji možete da mu date jedan LLM. Ne može biti loše parsirana, ignorisana ili loše interpretirana. LLM vidi`CSS/edster/`у путању фајла — оно зна.

Потпуно дрво — четири зоне, не три

Granularizacija OSS/CSS dopunjuje ontologiju sa tri zona. Zona `foundry/`прелази од 1 до 2 функционалних подзона:

@startuml
skinparam backgroundColor #FEFEFE
skinparam defaultTextAlignment center
skinparam wrapWidth 260

title Organizacija foundry/ — Granularizacija OSS/CSS
package "foundry/" {

  package "Круг 0 — Корен" #FFCCCC {
    rectangle "PICTURE_ME_ROLLIN_*.adoc" as STIM
    rectangle "WORKSPACE_*.adoc" as VISION_DOC
    note right of STIM
      Brain dump libre
      Jamais versionné
      [LLM : interdit d'indexer]
    end note
  }

  package "Круг 1 — конфигурација/" #FFD9CC {
    rectangle "Tajni, tokeni" as SECRETS
    rectangle "Spring Cloud Config" as SCC
    note right of SECRETS
      Privé-CVS, solo access
      [LLM : INTERDIT]
    end note
  }

  package "Круг 2 — office/" #FFFFCC {
    rectangle "Статьи, кадрирања" as DATA
    rectangle "Formacije, SPG/SPD" as FORM
    note right of DATA
      Privé-CVS
      [LLM : filtré Vision/Opinion]
    end note
  }

  package "Круг 3 — ливаonica/" #CCE5FF {
    package "OSS/ — Apache 2.0" #CCFFCC {
      rectangle "Gradle pluginovi" as PLUGINS
      rectangle "motor" as ENGINE
    }
    package "CSS/ — zatvoreni kod" #CCDDFF {
      rectangle "edster/" as EDSTER
    }
  }
}

@enduml

| Zona | GDPR | Indeksiranje RAG javno | Podatak skup finetuniranje | | Koren | Nivo 0 — Intimno | ✗ | ✗ | | configuration/| Nivo 1 — Ograničen | ✗ | ✗ | | office/| Nivo 2 — saradnji | ✓ Filtrirano | ✓ Filtrirano | | foundry/private/| Nivo 3 — Uslovljeno otvoreno | ✗ | ✓ Privatno | | foundry/public/| Nivo 4 — Natavna publikacija | ✓ Slobodno | ✓ Javno |

Poseban slučaj : cheroliv.com

Док сам тамо био, исправио сам другу неконсистентност. Мој сајт cheroliv.com`живео у`foundry/`kao softverski projekat potpun — sa sopstveni Gradle build, sopstvena CI, sopstvena управљање.agents/`.

Ali blog postovi nisu kod. Oni su podaci uredničke** Cercle 2 — na isti način kao okviranja`office/pilotage/` ili formacije`office/formations/`.

AVANT                            APRÈS
foundry/                office/
  cheroliv.com/                    sites/
    site/jbake/content/blog/         cheroliv.com/
      2026/0117_....adoc               2026/0117_....adoc

Šta se menja:

  • Članci su u`office/`→ privatnost Krug 2

  • Задатак`publishSite`postaje jedna sposobnost za`engine`

preko`bakery-gradle`— плагин прима један`FileTree`, он не зна da članci potiču iz`office/`

  • Jedna CI, jedno upravljanje — nula dupliciranja

  • Klasifikator Videnje/Mišljenje (Pravilo 2bis) se primenjuje automatski :

članci u`office/`Филтрирају се пре публикације

bakery-gradle se ne brine

I to je lepo. Plugin`bakery-gradle`nije promenjen. Prima direktorijum sadržaja AsciiDoc, generiše HTML, pushuje на GitHub Pages. Как се ова директория зове`site/jbake/content/` ou office/sites/cheroliv/— plugin se ne brine.

// engine/build.gradle.kts
task("publishBlog") {
    doLast {
        val articles = fileTree("../../office/sites/cheroliv/2026/")
        bakery.generate(articles)  // ← bakery ne sait pas d'où ça vient
    }
}

Ugovor o interfejsu je Gradle zadatak. Nije REST API. Nije webhook. Jedna zadatak — tipovan, testiran, izvršavan lokalno i u CI.

Утицај на Агент управљања

Granulacija OSS/CSS izmenjuje upravljanje agenta na tri tačke:

  1. RAG javni : opseg indeksiranja prelazi sa`foundry/**`

à foundry/public/+office/Vision/. Zatvoreni izvorni kod Izuzet je iz indeksa po konfiguraciji zadatka, a ne po promptu.

  1. Knowledge Graph : graphify-gradle proizvodi dva grafa :

*office/graph.json(javno) — odnosi između artefakata OSS + kontor/Vizija * configuration/graph_private.json(gitignored, privé) — odnosi između artefakti CSS, nikad objavljen

  1. fin podešavanje dataseta :`codebase-gradle`сада има два извора :

*OSS/→ javni skupovi podataka (komunitetski modeli, benchmarks) (empty)CSS/→ приватни скупови података (унутрешњи модел, сопствен fine-tuning)

Što dobijamo (i što gubimo)

Pre (ravna datoteka)

После (OSS/CSS + office/sites)

ls foundry/→ јавно-приватна мешавина

ls foundry/public/→ sve je objavljivo

RAG indeksira sve bez diskriminacije

RAG indeksira`OSS/`+`office/Vision`искључиво

Nemoguće je da se zna da li je projekat otvorenog koda

Put`OSS/` ou `CSS/`речено

cheroliv.com ima svoj CI i svoju vlastitu upravu

CI i upravljanje su zajedničke u engine

Blog postovi se nalaze u skladištu "code".

Blog članci su u`office/sites/`— podaci, nije kod

Rizik izbegavanja zatvorenog koda u javnim embedding-ima

Структурно невозможно —`CSS/`izvan scope RAG

Jedini trošak: jedan`git mv`global na 17 OSS repozitorijuma + jedan refaktorisanje du build.gradle.kts de engine. Ово је хладна миграција — Nema podataka u tranzitu, nema zakoristenih korisnika.

Conclusion: Fizički signal pobeđuje logički signal

Šta sam uradio ove popodne je da zamenim nevidljivu konvenciju podelom vidljivom u zoni`foundry/. Prethodno, morali ste знати да`edster/`bio je closed source. Sada, ga vidite — Direktorijum se zove`CSS/.

To je isti princip kao Unix dozvole, mrežni VLAN-ovi ili ognjoodržni odeljci u bazi podataka. Bezbednost ne sme biti jedna informaciju kojo trebate da zapamtite. Ona mora da diventare jedno svojstvo. физикаsistema.

Грануларзација OSS/CSS је превод овог принципа у домену о управљању LLM. LLM не мора да зна да је Edстер конфиденцијално. Му је потребно да буде неспособан да индексира то.

И то је тачно оно што`CSS/`гарантује.

Reference

Повезани чланци