
WasmForge — Go और C# प्रोग्राम को single-binary, WASM-sandboxed native executables में polymorphic output के साथ संकलित करें।
WasmForge Go और C# प्रोग्रामों को WebAssembly में कंपाइल करता है, फिर उन्हें एकल नेटिव बाइनरीज़ के रूप में पैकेज करता है। परिणामी निष्पादन योग्य फ़ाइलें गेस्ट कोड को एक WASM रनटाइम (wazero के प्रति-बिल्ड फ़ोर्क) के अंदर सैंडबॉक्स करती हैं। उस सैंडबॉक्स के अंदर से, गेस्ट को नेटवर्किंग, रॉ सॉकेट्स, Win32 APIs और macOS फ्रेमवर्क APIs तक पारदर्शी पहुँच मिलती है।
आप net.Dial, net.Listen या net/http का उपयोग करके सामान्य Go लिख सकते हैं। आप किसी मौजूदा .NET Framework C# प्रोजेक्ट को माइग्रेट भी कर सकते हैं। किसी भी तरह से, आउटपुट एक एकल बाइनरी होती है जो Windows या macOS पर चलती है, बिना उपयोगकर्ता को गेस्ट स्रोत में संशोधन करने की आवश्यकता के।

इस प्रोजेक्ट पर एक त्वरित नज़र डालने से काफी स्पष्ट हो जाएगा कि इसे LLMs के भारी उपयोग के साथ विकसित किया गया था। दस्तावेज़ीकरण का एक हिस्सा भी ऐसा ही है - लेकिन यह खंड नहीं है। मैंने इस README को डी-स्लॉपिफाई करने के साथ-साथ WasmForge का उपयोग करने की प्रक्रिया को यथासंभव सीधा बनाने की पूरी कोशिश की है। इसके अलावा, जबकि LLMs ऐसा दस्तावेज़ीकरण लिखेंगे जो अपनी उपलब्धियों की बहुत प्रशंसा करता है, सीमाओं को उतना स्पष्ट नहीं किया जाता है।
अपेक्षाओं को ठीक से सेट करने के लिए, जबकि Go की विभिन्न सुविधाओं के साथ इसका परीक्षण किया गया है, यह सभी Go प्रोग्रामों के लिए पूर्ण समाधान नहीं है। win32 API का एक स्वस्थ प्रतिशत अभी भी ठीक से समर्थित नहीं है (जैसे कि वे APIs जिनमें कॉलबैक थंक्स की आवश्यकता होती है)। उदाहरण के लिए, Sliver कमांड की एक स्वस्थ संख्या के लिए काम करता है, लेकिन यह कार्यक्षमता के साथ पूर्ण 1:1 पोर्ट नहीं है। उदाहरण के लिए, ls अभी भी पारंपरिक C:\ पथ के बजाय / वाले पथ दिखाएगा, क्योंकि WASM ब्लॉब पूरी तरह से यह महसूस नहीं कर पाया है कि वह Windows के अंदर है। अन्य क्षमताएँ हैं जो सिर्फ क्रैश ट्रिगर कर देंगी। यह सुनिश्चित करें कि किसी वास्तविक लक्ष्य पर उपयोग करने का प्रयास करने से पहले आप किसी भी कार्यक्षमता का परीक्षण कर लें जिसका आप उपयोग करना चाहते हैं। यदि कुछ काम नहीं करता है, तो उस API का सबसे बुनियादी उदाहरण बनाने का प्रयास करें जो टूटा हुआ है और एक इश्यू खोलें / PR सबमिट करें।
C# वाला हिस्सा अंततः कार्यान्वयन की तुलना में अधिक प्रूफ-ऑफ-कॉन्सेप्ट है। C# को WASM में कंपाइल करने के लिए जिस प्रक्रिया का उपयोग किया जाता है वह बहुत अधिक प्रयोगात्मक है और इसका मतलब है कि WasmForge को अक्सर प्रोग्राम चलाने के लिए उसका एक स्वस्थ हिस्सा फिर से लिखने की आवश्यकता होती है। अंततः मैं शायद इस क्षमता पर बहुत अधिक समय बिता बैठा और लोगों को C# कोड को Go कोड के रूप में फिर से लिखने के लिए LLM का उपयोग करने की सिफारिश करनी चाहिए थी। यह संभवतः कम दर्दनाक है। फिर भी, C# -> Wasm -> WasmForge का सामान्य पैटर्न काम करता है और यह C#-विशिष्ट डिटेक्शन की एक स्वस्थ संख्या को तोड़ता है।
इस नोट पर - WasmForge मुख्य रूप से स्टैटिक डिटेक्शन से निपटने के लिए है। ट्रांसपिलेशन प्रक्रिया अधिकांश डिटेक्शन को तोड़ देती है, यहाँ तक कि मेमोरी-इन-स्कैनिंग के लिए भी, लेकिन अंततः यदि आपकी बाइनरी में कुछ बहुत स्पष्ट स्ट्रिंग्स हैं जैसे mimikatz या sliver, तो कुछ कम-प्रयास वाले मेमोरी-इन-स्कैन हैं जो डिटेक्शन का कारण बनेंगे। भविष्य में स्वचालित स्ट्रिंग अस्पष्टीकरण जोड़ा जाएगा क्योंकि यह स्वचालित करने के लिए काफी आसान सुविधा है, लेकिन पहले पास के लिए मैं डिबगिंग को अपेक्षाकृत सीधा रखने के लिए बिल्ड पाइपलाइन में अतिरिक्त जटिलता नहीं जोड़ना चाहता था।
जबकि इस रिपॉजिटरी में स्रोत कोड को साफ/समेकित करने के कुछ प्रयास किए गए हैं, यह अभी भी काफी अव्यवस्थित है। विभिन्न परीक्षण प्रक्रियाओं के लिए कई अलग-अलग फ़ोल्डर हैं। बुनियादी यूनिट परीक्षण examples/ और test/ में रहते हैं, जबकि कुछ अधिक जटिल परीक्षण जो पूर्ण प्रयोगशाला वातावरण में चलाए जाने के लिए होते हैं, testdata/ में रहते हैं। इसके अलावा scripts/ और internal/devtools फ़ोल्डरों में कई विकास/परीक्षण-केवल उपकरण हैं। ये केवल तभी आवश्यक होंगे यदि आप आगे के विकास के लिए अपना स्वयं का परीक्षण वातावरण स्थापित करने का प्रयास कर रहे हैं। सामान्य तौर पर इस जटिलता के कुछ विकसित करने के लिए किसी भी LLM को पीढ़ी का मार्गदर्शन करने के लिए बहुत स्पष्ट परीक्षण मामलों की आवश्यकता होती है, अन्यथा आप कुछ ऐसा बना लेते हैं जो बिल्कुल काम नहीं करता है। प्रोजेक्ट में ये हार्नेस शामिल हैं ताकि कोई भी जिज्ञासु व्यक्ति टूलिंग का अपना विकास जारी रख सके या प्रोजेक्ट में योगदान कर सके।
उम्मीद है कि समुदाय इस टूलिंग को अपेक्षाकृत उपयोग में आसान पाएगा और समय के साथ हम इसमें सुधार जारी रखेंगे। शायद एक दिन C# कंपाइलेशन उतना ही अच्छा काम करेगा जितना Go कंपाइलेशन करता है।
wasmforge प्राप्त करने के तीन तरीके हैं:
प्रीबिल्ट बाइनरी। Releases पेज से एक रिलीज़ डाउनलोड करें — CLI के Linux, macOS और Windows बिल्ड प्रत्येक टैग से जुड़े होते हैं।
Docker इमेज। C# / .NET प्रोजेक्ट्स के लिए, बंडल की गई इमेज में सभी पूर्वापेक्षाएँ (.NET 10 SDK, NativeAOT-LLVM workload, WASI SDK 24.0, wasm-ld, osslsigncode) पहले से इंस्टॉल हैं। इसे make docker-build के साथ एक बार बनाएं और make docker-run के साथ चलाएं — पूर्ण वर्कफ़्लो के लिए docs/CSHARP.md देखें। C# के लिए यह अनुशंसित मार्ग है।
स्रोत से निर्माण करें।
make build
make build एम्बेडेड internal/build/build_assets.tar.gz को पुनर्जीवित करता है और फिर CLI को कंपाइल करता है। यदि आप केवल go build -o wasmforge ./cmd/wasmforge चलाते हैं तो आपको एक काम करने वाली बाइनरी मिलेगी, लेकिन डिस्ट्रीब्यूशन-मोड बिल्ड (जब CLI इस स्रोत ट्री के बाहर चलता है) एक पुराने एम्बेडेड आर्काइव का उपयोग करेगा। लंबे स्पष्टीकरण के लिए CONTRIBUTING.md देखें।
examples/ निर्देशिका में चलने योग्य Go प्रोग्राम हैं जिन्हें आप तुरंत बना सकते हैं। पूर्ण मेनू के लिए examples/README.md देखें।
GOOS=windows GOARCH=amd64 ./wasmforge build \
--ghost traefik \
-o myapp.exe \
/path/to/your/project
Win32 API ब्रिज अपने आप सक्रिय हो जाता है जब भी GOOS=windows हो — सामान्य मामले के लिए अब आपको --win32-apis पास करने की आवश्यकता नहीं है।
--ghost traefik एम्बेडेड gopclntab प्रतीक वितरण को Traefik रिवर्स प्रॉक्सी जैसा दिखने के लिए बदल देता है। बंडल किए गए प्रोफाइलों में से, यह सबसे कम VirusTotal डिटेक्शन दर उत्पन्न करता है। अन्य प्रोफाइल और अपने स्वयं के उत्पन्न करने के निर्देश docs/GHOST-PROFILES.md में रहते हैं।
Windows लक्ष्य डिफ़ॉल्ट रूप से एक स्व-हस्ताक्षरित प्रमाणपत्र के साथ ऑटो-हस्ताक्षरित होते हैं। किसी डोमेन के TLS प्रमाणपत्र को नकली बनाने के लिए --sign google.com का उपयोग करें, या हस्ताक्षर को पूरी तरह से अक्षम करने के लिए --no-sign का उपयोग करें।
# Intel
GOOS=darwin GOARCH=amd64 ./wasmforge build -o myapp /path/to/your/project
# Apple Silicon
GOOS=darwin GOARCH=arm64 ./wasmforge build -o myapp /path/to/your/project
कोई अतिरिक्त फ़्लैग आवश्यक नहीं हैं। macOS फ्रेमवर्क ब्रिज जब भी GOOS=darwin होता है तो अपने आप सक्रिय हो जाता है। फ्रेमवर्क ब्रिज, purego/ObjC समर्थन और अन्य Apple-विशिष्ट नोट्स के लिए docs/MACOS.md देखें।
# रॉ सॉकेट समर्थन (CAP_NET_RAW या बिल्ड समय पर रूट की आवश्यकता है)
./wasmforge build --raw-sockets -o myapp ./path/to/project
# वर्बोज़ आउटपुट (पहले बिल्ड के लिए उपयोगी)
GOOS=windows GOARCH=amd64 ./wasmforge build --ghost traefik --win32-apis -v -o tool.exe /path/to/project
# कस्टम PE VERSIONINFO (केवल Windows)
./wasmforge build --pe-company "Acme Corp" --pe-product "AcmeTool" --pe-file-version "10.0.19041.1" ...
C# प्रोजेक्ट्स (.csproj फ़ाइलें) अपने आप डिटेक्ट हो जाती हैं। WasmForge एक कमांड में पूर्ण NativeAOT-WASI माइग्रेशन, पैच और बिल्ड पाइपलाइन चलाता है:
GOOS=windows GOARCH=amd64 ./wasmforge build --win32-apis -o seatbelt.exe path/to/Seatbelt/Seatbelt/
C# कार्य के लिए हम दृढ़ता से Docker बिल्ड वातावरण की अनुशंसा करते हैं। यह सभी पूर्वापेक्षाएँ (.NET 10 SDK, NativeAOT-LLVM workload, WASI SDK 24.0, wasm-ld) बंडल करता है, इसलिए आपको उनमें से किसी को भी होस्ट पर इंस्टॉल करने की आवश्यकता नहीं है। पूर्ण निर्देश docs/CSHARP.md में रहते हैं।
wasmforge build [package] Go (या C#) पैकेज को WASM-सैंडबॉक्स्ड नेटिव बाइनरी में कंपाइल करें
-o, --output <path> आउटपुट बाइनरी पथ
--ghost <name> घोस्ट प्रोफाइल: traefik, caddy, terraform (docs/GHOST-PROFILES.md देखें)
--raw-sockets रॉ सॉकेट समर्थन सक्षम करें
--win32-apis Win32 API ब्रिज सक्षम करें (Windows लक्ष्य)
--sign <mode> बाइनरी पर हस्ताक्षर करें: 'self' या डोमेन नाम (डिफ़ॉल्ट: self Windows के लिए)
--no-sign Windows लक्ष्यों के लिए डिफ़ॉल्ट ऑटो-साइनिंग अक्षम करें
--tags <tags> Go बिल्ड टैग (अल्पविराम से अलग)
--pe-company / --pe-product / --pe-description / --pe-copyright / --pe-file-version
PE VERSIONINFO ओवरराइड
-v, --verbose वर्बोज़ बिल्ड आउटपुट
wasmforge run [package] बनाएँ और तुरंत निष्पादित करें
wasmforge clean कैश की गई पैच की गई GOROOTs (~/.wasmforge/cache/) हटाएं
wasmforge version संस्करण प्रिंट करें
wasmforge dotnet-migrate <dir> .NET Framework प्रोजेक्ट को .NET 10 NativeAOT-WASI में माइग्रेट करें
wasmforge dotnet-patch <dir> NativeAOT-WASI C# स्रोत पैच लागू करें
WasmForge WASM और अंतर्निहित होस्ट के बीच के अंतर को पाटता है ताकि गेस्ट प्रोग्राम को ऐसा न करना पड़े।
प्लेटफ़ॉर्म APIs। TCP, UDP, DNS, HTTP, TLS और रॉ सॉकेट Windows और macOS दोनों पर गेस्ट कोड में बदलाव के बिना काम करते हैं। Windows पर, WasmForge पूर्ण Win32 सतह को प्रॉक्सी करता है: रजिस्ट्री, फ़ाइल I/O, प्रक्रियाएँ, DLL लोडिंग, और 15 तर्कों तक के साथ SyscallN। पॉइंटर अनुवाद स्वचालित है। COM vtable श्रृंखलाएँ मिरर की जाती हैं ताकि CLR और अन्य COM-भारी APIs एंड-टू-एंड काम करें। macOS पर, dlopen और dlsym किसी भी फ्रेमवर्क (Security, CoreGraphics, IOKit, इत्यादि) तक पहुँचते हैं, और ebitengine/purego प्लस Objective-C रनटाइम बॉक्स से बाहर काम करते हैं।
.NET होस्टिंग और माइग्रेशन। CLR मानक श्रृंखला (CoInitializeEx, CLRCreateInstance, Load_3, Invoke_3) के माध्यम से लोड होता है। AMSI को स्टार्टअप पर पैच किया जाता है ताकि Assembly.Load(byte[]) ज्ञात टूलिंग को ब्लॉक न करे। एक अलग NativeAOT-WASI पाइपलाइन मौजूदा .NET Framework प्रोजेक्ट लेती है और लक्ष्य पर कोई .NET रनटाइम की आवश्यकता के बिना एकल Windows PE बाइनरी उत्पन्न करती है।
होस्ट मेमोरी और शेलकोड। एक VirtualAlloc-समर्थित होस्ट मेमोरी प्रॉक्सी गेस्ट के अंदर से पहुँच योग्य है। यह COFF/BOF लोडर और शेलकोड निष्पादन को WASM सैंडबॉक्स से बाहर निकले बिना संभव बनाता है।
सहकारी यील्ड। ब्लॉकिंग Win32 APIs (Sleep, WaitForSingleObject, ReadFile, और इसी तरह) WASM goroutines को फ्रीज़ नहीं करती हैं। होस्ट बैकग्राउंड goroutine पर कॉल भेजता है और परिणाम तैयार होने तक गेस्ट को यील्ड करने का संकेत देता है।
बहुरूपी आउटपुट। प्रत्येक बिल्ड संरचनात्मक रूप से अद्वितीय बाइनरी उत्पन्न करता है। WASM opcodes क्रमपरिवर्तित होते हैं, सेक्शन ID और मैजिक बाइट्स यादृच्छिक होते हैं, और प्रत्येक पहचानकर्ता, PE आयात, VERSIONINFO स्ट्रिंग, लाइसेंस ब्लॉक और स्रोत फ़ाइल नाम को साफ़ किया जाता है। बंडल किया गया wazero फ़ोर्क क्रमपरिवर्तित बाइटकोड से मेल खाने के लिए फिर से लिखा जाता है। घोस्ट प्रोफाइलिंग वास्तविक एंटरप्राइज़ Go बाइनरी (Traefik, Caddy, Terraform) से मेल खाने के लिए gopclntab प्रतीकों को फिर से लिखती है। Windows आउटपुट डिफ़ॉल्ट रूप से Authenticode-हस्ताक्षरित होते हैं, या तो स्व-हस्ताक्षरित या osslsigncode के माध्यम से वास्तविक डोमेन का TLS प्रमाणपत्र नकली बनाकर।
+-------------------- WASM गेस्ट (wasip1) --------------------+
| |
| आपका Go प्रोग्राम (net, net/http, os; पारदर्शी रूप से काम करता है) |
| |
+----------- go:wasmimport ABI (कस्टम opcodes) --------------+
|
+----------- होस्ट रनटाइम (प्रति-बिल्ड wazero फ़ोर्क) --------+
| |
| 90+ होस्ट फ़ंक्शन (नेटवर्किंग, OS प्रॉक्सी, प्लेटफ़ॉर्म APIs) |
| Windows: पॉइंटर अनुवाद, शैडो मेमोरी, COM मिररिंग |
| macOS: dlopen/dlsym फ्रेमवर्क ब्रिज, ABI ट्रैम्पोलाइन |
| |
+----------- wazero (कस्टम VM: क्रमपरिवर्तित opcodes/magic) --+
|
OS कर्नेल / Windows APIs / macOS फ्रेमवर्क
बिल्ड पाइपलाइन छह चरणों में चलती है।
syscall/ और net/ को पैच करें। ~/.wasmforge/cache/ पर कैश किया जाता है।GOOS=wasip1 GOARCH=wasm के साथ बनाएँ। ऑटो-स्टब्स प्लेटफ़ॉर्म-विशिष्ट अंतराल को कवर करते हैं। जब वे आयात मौजूद होते हैं तो golang.org/x/sys और ebitengine/purego के लिए Sysshims इंजेक्ट किए जाते हैं।main.go जिसमें यादृच्छिक पहचानकर्ता, एक मिलान करने वाला प्रति-बिल्ड wazero फ़ोर्क, बेक्ड-इन PE संसाधन और -trimpath है।osslsigncode के माध्यम से Authenticode हस्ताक्षर।WasmForge अपरिवर्तित तृतीय-पक्ष Go प्रोजेक्ट्स को कंपाइल और चलाता है, जिसमें जटिल प्लेटफ़ॉर्म-विशिष्ट कोड वाले भी शामिल हैं।
.NET NativeAOT-WASI प्रोग्राम:
चरण-दर-चरण Sliver वॉकथ्रू के लिए docs/BUILDING-SLIVER.md और C# पाइपलाइन के लिए docs/CSHARP.md देखें।
WasmForge Linux, macOS या Windows बिल्ड होस्ट पर चलता है। Go 1.25 या नया आवश्यक है।
कुछ सुविधाओं को अतिरिक्त सेटअप की आवश्यकता होती है। रॉ सॉकेट को CAP_NET_RAW या रूट की आवश्यकता होती है। Win32 ब्रिज को --win32-apis के साथ एक Windows लक्ष्य की आवश्यकता होती है (अन्य लक्ष्य ENOSYS लौटाते हैं)। macOS फ्रेमवर्क ब्रिज को macOS लक्ष्य की आवश्यकता होती है और GOOS=darwin से स्वचालित रूप से डिटेक्ट होता है। कोड हस्ताक्षर के लिए PATH पर osslsigncode की आवश्यकता होती है। C# प्रोजेक्ट्स को .NET 10 SDK, NativeAOT-LLVM workload और WASI SDK 24.0 की आवश्यकता होती है। वैकल्पिक रूप से, बंडल की गई Docker इमेज (docs/CSHARP.md में शामिल) उन सभी के साथ पहले से इंस्टॉल आती है।
समानता परीक्षण हार्नेस (test/parity/) और scripts/lab-setup/ के तहत लैब-प्लांट स्क्रिप्ट अतिरिक्त रूप से Ludus का उपयोग करके स्थापित एक Active Directory रेंज मानते हैं जो GOAD (Game of Active Directory) चला रहा है — प्रत्येक हार्डकोडेड sevenkingdoms.local / kingslanding / SEVENKINGDOMS-CA डिफ़ॉल्ट एक GOAD डिफ़ॉल्ट है, जो WASMFORGE_PARITY_* env vars के माध्यम से ओवरराइड करने योग्य है (test/parity/internal/lab/lab.go देखें)। पूर्ण लैब सेटअप के लिए docs/internals/PARITY-HARNESS.md और docs/internals/LAB-STABILITY.md देखें।
यहाँ से शुरू करें
गहराई में जाना
अनुरक्षक संदर्भ
Apache लाइसेंस, संस्करण 2.0 के तहत लाइसेंस प्राप्त। विवरण के लिए LICENSE और NOTICE देखें।
कॉपीराइट (c) 2025-2026 Praetorian Security, Inc.
| प्रोग्राम | प्लेटफ़ॉर्म | विवरण | सत्यापित |
|---|
| Sliver | Windows | C2 फ्रेमवर्क, भारी Win32 उपयोग | HTTPS बीकन, whoami, ps, netstat, execute-assembly (Rubeus, Seatbelt) |
| Sliver | macOS | C2 फ्रेमवर्क (बीकन + सत्र) | pwd, ls, download, execute, SOCKS5 प्रॉक्सी |
| go-clr | Windows | .NET CLR होस्टिंग + असेंबली निष्पादन | CLR लोड श्रृंखला, Rubeus ट्राइएज, Seatbelt सिस्टम स्कैन |
| Chisel | Windows | TCP/UDP सुरंग HTTP पर SOCKS5 के साथ | सुरंग कनेक्टिविटी, प्रॉक्सी फ़ॉरवर्डिंग |
| Ligolo-ng | Windows | उन्नत सुरंग और पिवटिंग | TUN इंटरफ़ेस, एजेंट कनेक्टिविटी |
| goffloader | Windows | COFF/BOF लोडर unsafe.Pointer का उपयोग करके | VirtualAlloc, शेलकोड निष्पादन, PE पार्सिंग, IAT समाधान |
| प्रोग्राम | प्लेटफ़ॉर्म | विवरण | सत्यापित |
|---|
| Seatbelt | Windows | सुरक्षा गणना | अधिकांश कमांड पास करते हैं; कुछ जिनमें WMI / Defender कॉलबैक डिस्पैच की आवश्यकता होती है, ब्रिज समर्थन की प्रतीक्षा में ईमानदारी से स्टब किए गए हैं। |
| Rubeus | Windows | Kerberos टूलिंग | हैश + टोकन ऑपरेशन सीधे काम करते हैं; नेटवर्क वर्ब (asktgt, kerberoast, asreproast) TCP ब्रिज से होकर जाते हैं; LSA क्वेरी (klist, logonsession) नेटिव बेसलाइन से मेल खाती हैं। |
| विषय | दस्तावेज़ |
|---|
| चलने योग्य उदाहरण (TCP स्कैनर, HTTP सर्वर, ICMP पिंग) | examples/README.md |
| Sliver को एंड-टू-एंड बनाना (Windows + macOS) | docs/BUILDING-SLIVER.md |
| C# / .NET प्रोजेक्ट कंपाइलेशन (Docker वर्कफ़्लो) | docs/CSHARP.md |
| macOS लक्ष्य और फ्रेमवर्क ब्रिज | docs/MACOS.md |
| घोस्ट प्रोफाइल उपयोग और कस्टम प्रोफाइल बिल्ड | docs/GHOST-PROFILES.md |
बिल्ड-टाइम पर्यावरण चर (R80 रेसिपी, प्रत्येक WASMFORGE_* नॉब) | docs/ENVIRONMENT.md |
| विषय | दस्तावेज़ |
|---|
| आर्किटेक्चर — होस्ट मॉड्यूल, बिल्ड पाइपलाइन, डिज़ाइन निर्णय | docs/ARCHITECTURE.md |
| योगदान — रेपो लेआउट, पूर्वापेक्षाएँ, होस्ट फ़ंक्शन जोड़ना | CONTRIBUTING.md |
| सुरक्षा नीति + प्रकटीकरण | SECURITY.md |
| आचार संहिता | CODE_OF_CONDUCT.md |
| विषय | दस्तावेज़ |
|---|
| होस्ट API अनुबंध — पंजीकृत निर्यात, हस्ताक्षर स्थिरता | docs/internals/HOST-API-CONTRACT.md |
| AST पैचर आंतरिक — स्ट्रिंग-रिप्लेस नियम और डिस्पैच | docs/internals/AST-PATCHER.md |
| समानता हार्नेस — C# नेटिव बनाम WASM डिफ्स चलाना | docs/internals/PARITY-HARNESS.md |
| लैब स्थिरता — Ludus + GOAD रेंज सेटअप, वॉचडॉग स्क्रिप्ट | docs/internals/LAB-STABILITY.md |