Грануларност OSS/CSS — Зашто сам резао `foundry/` у два
Објављено 03 May 2026
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:
-
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.
-
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
-
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) |
|
|
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
-
Члан 0116 — Аутоматизовано епистемолошко подељење