پڑھنے کا وقت : 10 minutes

foundry/— فنکشنل زون جس میں میرے وورک سпис کا کوڈ ہوسٹ ہوتا ہے — یہ 18 proyectoں شامل کرتا ہے۔ آٹھ اوپن سروسز آپاچی 2.0 کے تحت ہیں۔ صرف ایک closed source — یہ SaaS Edster. ماہوں تک، یہ نو پراجیکٹس ایک ساتھ رہے ایک ہی فولدِر میں، صرف …​ کچھ نہیں سے. ان کی عام/خصوصی حالت یہ میری دماغ میں ایک معلومات تھی، فائل سسٹم میں نہیں۔

میں نے ایک RAG کو جوڑنا چاہا۔ اور پھر، سب کچھ تباہ ہو گیا۔

کائنے والی حادثہ

اپریل 2026 میں، میں نے slider-gradle کے لیے pgvector RAG کا تطبيق کرنا شروع کیا۔ مبدأ: تمام ڈپوزٹس کا انڈیکس کریں`foundry/, پیدا کرنا ایمبڈنگس، اور انہیں LLM کے سیاق میں داخل کر دیں تاکہ اس کے پاس ایک perception" کا ملف`foundry/.

پائپ لائن سادہ تھا :

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)

سادہ. مؤثر. اورخطرناک.

کیونکہ یہ`fileTree`فرق نہیں کرتا`plantuml-gradle/` (Apache 2.0, public) اور`edster/`(closed source, private). وہ سب کچھ کھاتا ہے. اور اگر ایک دن میں ان امبیڈنگز کو جاری کر دوں — ایک ڈیش بورڈ پر، ایک جواب میں LLM, ایک تربیت ڈیٹاسेट میں — ایڈسٹار کا مالکانه کود لیک ہو رہا ہے۔

مسئلہ یہ نہیں ہے کہ ایک LLM بند سرسورس کوڈ پڑے۔ مسئلہ, یہ ہے کہ یہ کوڈ ختم ہو ایک ویکٹر ایمبڈنگ عام — نا-قابلِ واپسی، غیر قابلِ حذف، غیر قابلِ جانچ

حقیقی سوال

یہ نہیں "کیسے LLM کو کوڈ لیک کرنے سے روک سکتے ہیں؟"۔ یہ ہے "کیسے فرار کو ساختا ناممکن بنانا؟

جواب ایک پرامپٹ نہیں۔ جواب ڈائریکٹری کو دو حصوں میں قطع کرنا ہے۔

حل: OSS/ و CSS/

پہلے :

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

بعد :

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é

عامی رِیجِی کبھی نہیں dekhtā`CSS/`.بند سرچ code closed source ایک ڈیٹا سیٹ کو چلاتا ہے فائن‑ٹوننگ سے محروم — ایک اندرونی ماڈل جو کبھی میرے گھر سے نکلتا نہیں۔ تفریق مکانیکی ہے، اعلانیہ نہیں۔

کیوں "OSS" اور "CSS" اور نہیں "Public" اور "Private

OSS (Open Source Software) اور CSS (Closed Source Software) کے اختصاروں کا انتخاب فیصلہ کیا گیا :

  • Public"/"Private" بیان کرتا ہےدیکھائیگِٹ ہب کیا دیکھتا ہے

  • OSS"/"CSS" بیان کرتا ہےفtratetکوڈ (جِسے LLM کو جاننا چاہئے)

GitHub کی رؤیا ایک ریموٹ ریpo کا متا ڈیٹا ہے۔ کُود کی فطرت ہے۔ مضمون کی ایک خصوصیت۔ LLM کو GitHub API تک رسائی نہیں ہے — لیکن اس کے پاس رسائی ہے فائل سسٹم پر.CSS/`اسکو کہا "ذہان دیں، یہ کڈ لائسنس نہیں ہے مفت پڑھنے کی ضرورت nélkül ایک`LICENSE`یا ایک کو پارس کرنے کا`package.json`.

فولڈر کا نام سب سے مضبوط میٹا ڈیٹا ہے جس کو آپ دے سکتے ہیں ایک LLM. اسے غلط طور سے پارس نہیں کیا جا سکتا، نادیده نہیں لیا جا سکتا، یا غلط طریقے سے سمجھا نہیں جا سکتا. یہ LLM دیکھتا ہے`CSS/edster/`فائل کے پاتھ میں — وہ جانتا ہے

مکمل درخت — چار علاقے، تین نہیں

OSS/CSS گرانیولیشن تین زون کی اونٹولوجیا مکمل کرتی ہے۔ زون `foundry/`ایک سے دو فنکشنل زیر-مناطق تک پہنچتا ہے:

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

title Organisation de foundry/ — Granularisation OSS/CSS

package "foundry/" {

  package "Cercle 0 — La Racine" #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 "Cercle 1 — configuration/" #FFD9CC {
    rectangle "Secrets, tokens" as SECRETS
    rectangle "Spring Cloud Config" as SCC
    note right of SECRETS
      Privé-CVS, solo access
      [LLM : INTERDIT]
    end note
  }

  package "Cercle 2 — office/" #FFFFCC {
    rectangle "Articles, cadrages" as DATA
    rectangle "Formations, SPG/SPD" as FORM
    note right of DATA
      Privé-CVS
      [LLM : filtré Vision/Opinion]
    end note
  }

  package "Cercle 3 — foundry/" #CCE5FF {
    package "OSS/ — Apache 2.0" #CCFFCC {
      rectangle "Plugins Gradle" as PLUGINS
      rectangle "engine" as ENGINE
    }
    package "CSS/ — Closed Source" #CCDDFF {
      rectangle "edster/" as EDSTER
    }
  }
}

@enduml

| زون | RGPD | پبلک RAG انڈیکسیشن | ڈیٹا سیٹ فائن ٹیوننگ | | Racine | لیول 0 — نجی | ✗ | ✗ | |configuration/| لیول 1 — محدود | ✗ | ✗ | |office/| لیول 2 — تعاون | ✓ فلٹر شدہ | ✓ فلٹر شدہ | |foundry/private/| لیول 3 — مشروط کھلا | ✗ | ✓ نجی | |foundry/public/| لیول 4 — نیٹو پبلک | ✓ آزاد | ✓ پبلک |

خاص کیس: cheroliv.com

جب میں وہاں تھا، میں نے ایک دیگر عدم سازگاری درست کی۔ میرا سائٹ cheroliv.com`میں رہا تھا`foundry/`ایک سافٹ ویئر پروجیکت کی طرح مکمل طور پر — اس کیاپنا Gradle بیلڈ، اس کیاپنی سی آئی، اس کیاپنی حکمرانی.agents/`.

لیکن بلاگ کے مضامین کوڈ نہیں ہیں۔ یہ ڈیٹا ہیں۔ Cercle 2 کے تحریری** — ke barabar framing ke`office/pilotage/` یا تربیتوں کا`office/formations/`.

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

جو بدل رہا ہے :

  • چیزیں داخل ہیں`office/`→ Cercle 2 کی رازداری

  • کام`publishSite`ایک قابلیت کا بن جاتا ہے`engine`

کے ذریعے`bakery-gradle`— پلاگین ایک دریافت کرتا ہے`FileTree`، وہ نہیں جانتا کہ مضامین آتے ہیں`office/`

  • ایک سی، ایک حکمرانی — صفر ڈاپلیکیشن

  • ویژن/راے کلاسیفائر (قاعدہ 2bis) خودکار طور پر لاگو ہوتا ہے :

مضامین میں`office/`پیشِ اشاعت سے قبل فیلتر کیے جاتے ہیں

bakery-gradle اس کا کوئی فَرَق نہیں پڑتا

اور یہ ہی ہے جو خوبصورت ہے۔ پلاگین`bakery-gradle`یہ تبدیلی نہیں کی گئی۔ یہ AsciiDoc محتوائے ڈائریکٹری کو وصول کرتا ہے، اس سے HTML بناتا ہے، یہ push کرتا ہے GitHub Pages پر. کہ یہ ڈائریکٹری نام ہے`site/jbake/content/` ou office/sites/cheroliv/— پلگین کو کسی چیز کی فکر نہیں۔

// 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
    }
}

انٹرفیس کنٹریکٹ ایک Gradle ٹاسک ہے۔ کوئی REST API نہیں ہے۔ کوئی webhook نہیں ہے۔ ایک ٹاسک — ٹائپڈ (typed)، قابلِ ٹیسٹ، مقامی طور پر اور CI میں قابلِ اجرا۔

گورننس ایجنٹ پر اثر

OSS/CSS کی گرانولرائزیشن ایجن گورننس کے تین نکات کو تبدیل کرتی ہے :

  1. RAG public : ان ڈیکس کرنے کا حاشیہ سے`foundry/**`

à foundry/public/+`office/Vision/`بند سورس کوڈ اس کو ٹاسک کنفیگریشن کے ذریعے انڈکس سے اخراج کیا جاتا ہے، پرامپٹ سے نہیں.

  1. Knowledge Graph : graphify-gradle دو گراف پیدا کرتا ہے :

*office/graph.json(عام) — OSS آرٹیفیکٹس + office/Vision کے درمیان تعلقات *configuration/graph_private.json(gitignored, خصوصی) — رابطوں کے درمیان CSS آرٹیفیکٹس، کبھی نہیں منتشر

  1. ڈیٹا فائن-ٹوننگ :`codebase-gradle`ابھی دو источниے ہیں :

*OSS/→ عوامی ڈیٹساٹس (کمیونٹی موڈلز، بینچمارکس) *CSS/→خصوصی ڈیٹ سیٹس (اندرونی مودیل، ملکی ٹوننگ)

ہم جیتتے ہیں ( اور ہم ہرتے ہیں )

پہلے (فلیٹ فولڈر) بعد (OSS/CSS + office/sites)

ls foundry/→ عوامی/نجی ملاپ

ls foundry/public/→ سب کچھ قابلِ اشاعت ہے

RAG بلا کسی امتیاز کے سب کچھ انڈیکس کرتا ہے

RAG انڈیکس`OSS/`+`office/Vision`صرف

یہ معلوم کرنا ناممکن ہے کہ آیا کوئی پروجیکٹ open source ہے

راستہ`OSS/` ou `CSS/`کہا گیا

cheroliv.com کا اپنا CI اور اپنی گورننس ہے

CI اور گورننس کو engine میں مشترکہ کیا گیا ہے

بلاگ کے مضامین ایک "code" ریپوزٹری میں ہیں

بلاگ کے مضامین اس میں ہیں`office/sites/`— ڈیٹا، کوڈ نہیں

پبلک ایمبیڈنگز (embeddings) میں کلوزڈ سورس کوڈ کے لیک ہونے کا خطرہ

ساختی طور پر ناممکن —`CSS/`RAG کے دائرہ کار سے باہر

صرف ایک لاگت : ایک`git mv`17 OSS ریپوزٹریز پر عالمی + ایک ری فیکٹر کا build.gradle.kts de engine. یہ ایک سرد مائگریشن — ہوا میں ڈیٹا نہیں، کوئی متاثر صارف نہیں۔

نتیجہ: فزیکل سیگنل سافٹ ویئر سیگنل پر غالب ہے

جب نے اس دوپہر کیا، وہ ایک غیر مرئی کنونشن کو بدلنا تھا منطقہ میں واضح تفریق`foundry/. پہلے، آپ کو جاننا کہ`edster/`یہ بند سورس تھا۔ اب آپ dekhte hain — فائل کا نام`CSS/.

یہ ایک ہی اصول ہے جس طرح یونیکس کی اجازتات، نیٹ ورک وی لان، یا آگ سے محفوظ اقسام ڈیٹا بیس میں۔ حفاظت نہیں کرنی چاہیے ایک معلومات جو آپ کو یاد رکھنا ضروری ہے۔ اس کو ایک خاصیت ہونا چاہیے۔ جسمنظام کا.

OSS/CSS کی گرانولائزیشن اس اصول کی ترجمہ ہے اس شعبے میں LLM کی governance۔ LLM کو معلوم کرنے کی ضرورت نہیں ہے کہ Edster ہے رازدار. اس کی ضرورت ہے کہ وہ اس کا انڈیکس نہیں کر سکتا۔

اور یہ بالکل وہ ہے`CSS/`ضمانت دیتا ہے۔

حوالہ جات

متعلقہ مضامین