इस प्रोजेक्ट के बारे में

# साइलेंट फेल्योर कैटलॉग (Silent Failure Catalog) यह एक व्यवस्थित कैटलॉग है जिसमें ऐसे विफलता पैटर्न संकलित हैं जहाँ **सत्यापन पास होता दिखता है पर वास्तव में कुछ भी जाँचता नहीं**। यह CI गेट, टेस्ट सूट, डेटा पाइपलाइन और AI एजेंट टूलचेन में 'फ़ेक ग्रीन' या 'सत्यापन अंतराल' समस्याओं पर केंद्रित है। ## मूल समस्या > "एक ऐसा टेस्ट जो हमेशा पास होता है, बिना टेस्ट से भी बदतर है। यह कवरेज जैसा दिखता है, पर वास्तव में कोई सुरक्षा नहीं देता।" क्रैश स्वयं घोषणा करता है, पर साइलेंट फेल्योर नहीं करता। पेज सामान्य रूप से लोड होता है, DOI सामान्य रूप से रिज़ॉल्व होता है, पाइपलाइन सामान्य रूप से `PASS` प्रिंट करती है, एजेंट सामान्य रूप से प्रगति रिपोर्ट करता है—**कहीं भी लाल नहीं है, और कहीं भी सही नहीं है**। इन विफलताओं की साझा विशेषता यह है: सिस्टम में 'जो होना चाहिए था वह नहीं हुआ' का संकेत नहीं है। अनुपस्थित, खाली, छोड़े गए, बिना गिने और गलत आरोपित स्थितियाँ अंततः **सफलता** के रूप में प्रस्तुत होती हैं। ## कैटलॉग संरचना इस कैटलॉग में **14 नामित साइलेंट फेल्योर पैटर्न** हैं, जो पाँच परिवारों में विभाजित हैं: - **A · खोखला सत्यापन (Vacuous Verification)**: जाँच चली, पर कोई विभेदन शक्ति नहीं (SF-001 से SF-004) - **B · बिना गिनी अनुपस्थिति (Uncounted Absence)**: आवश्यक वस्तु अनुपस्थित, पर अनुपस्थिति विफलता नहीं मानी जाती (SF-005 से SF-007) - **C · गलत साक्ष्य (Wrong Evidence)**: प्रयुक्त संकेत प्राप्त निष्कर्ष को सिद्ध नहीं कर सकता (SF-008 से SF-010) - **D · विचलित ओरेकल (Drifting Oracle)**: जाँच स्वयं क्षय होती है—छूट, सबस्ट्रिंग मिलान, गलत आरोपण (SF-011 से SF-012) - **E · प्रक्रिया और परिवेश (Process & Environment)**: विफलता तर्क के बाहर है—पुराने आर्टिफैक्ट, ज़ॉम्बी प्रोसेस (SF-013 से SF-014) प्रत्येक प्रविष्टि एक समान छह-भाग संरचना का पालन करती है: **लक्षण → क्यों साइलेंट → न्यूनतम पुनरुत्पादन → स्व-जाँच → समाधान → संबंधित**। ## साझा मूल कारण सभी परिवार मूलतः एक ही दोष के विभिन्न स्तरों पर प्रकट रूप हैं: > **'साक्ष्य का अभाव' को 'समस्या का अभाव' का साक्ष्य मान लेना।** इससे दो सबसे व्यावहारिक नियम निकलते हैं: 1. **अनुपस्थिति को एग्ज़िट कोड में जाना चाहिए**—यदि 'जो होना चाहिए था वह नहीं है' केवल लॉग, तटस्थ मार्कर या स्किप के रूप में दर्ज हो, तो वह सदैव `exit 0` उत्पन्न करेगा, और गेट ठीक सबसे महत्वपूर्ण स्थान पर अंधा रहेगा। 2. **नकारात्मक नियंत्रण के बिना कोई साक्ष्य नहीं**—जिस जाँच को कभी विफल होते नहीं देखा गया, वह सिद्ध नहीं करती कि वह विफल हो सकती है। प्रत्येक नकारात्मक निष्कर्ष के लिए एक सकारात्मक नियंत्रण आवश्यक है। ## त्वरित शुरुआत ```bash git clone https://github.com/zhaoxinghua09-cell/silent-failure-catalog.git cd silent-failure-catalog # अपने विश्वसनीय गेट/सत्यापनकर्ता/ऑडिट स्क्रिप्ट की जाँच करें python tools/gate-lint.py path/to/your_gate.py # कैटलॉग की आंतरिक संगति सत्यापित करें python tools/check-catalog.py ``` दोनों स्क्रिप्ट **शुद्ध मानक लाइब्रेरी** में कार्यान्वित हैं—कोई इंस्टॉलेशन नहीं, कोई नेटवर्क नहीं, Python 3.9+ पर्याप्त है। ## स्वयं का स्वास्थ्य परीक्षक (gate-lint.py) यह उपकरण आपकी स्वयं की गेट स्क्रिप्ट को स्कैन करके इन साइलेंट फेल्योर पैटर्न की पहचान कर सकता है, जैसे: - `SFL-001 no-nonzero-exit`: फ़ाइल में कोई `exit()`/`raise`/`assert` नहीं, विफल हो ही नहीं सकती - `SFL-002 swallow-exception`: `except` ब्लॉक केवल `pass` निष्पादित करता है - `SFL-003 unchecked-empty`: खाली/गलत मान को सामान्य मान लिया जाता है - `SFL-004 counter-does-not-gate-exit`: काउंटर एग्ज़िट कोड को कभी प्रभावित नहीं करता - `SFL-005 zero-item-pass`: टेस्ट रनर को कॉल करता है पर '0 आइटम संग्रह' से कभी नहीं बचाता - `SFL-006 no-negative-control`: कोई नकारात्मक नियंत्रण नमूना नहीं मिला, जाँच की विफलता सिद्ध नहीं हो सकती कम गंभीरता वाले निष्कर्ष **आउटपुट में स्पष्ट रूप से अवनत के रूप में चिह्नित** होते हैं, न कि साइलेंट रूप से त्यागे जाते हैं—क्योंकि साइलेंट त्याग ही वह विफलता है जिसे यह कैटलॉग दर्ज करता है। `--strict` का उपयोग करके कम स्तर के निष्कर्षों को गैर-शून्य एग्ज़िट तक बढ़ाया जा सकता है। ## सामग्री अखंडता `INTEGRITY.md` और `manifest.sha256` प्रत्येक फ़ाइल के लिए SHA-256 डाइजेस्ट दर्ज करते हैं, और एक समुच्चय डाइजेस्ट भी, ताकि पाठक पुष्टि कर सकें कि उनके पास इस पृष्ठ में वर्णित बाइट्स ही हैं। `tools/make-manifest.py --check` किसी भी विचलन पर एग्ज़िट कोड 1 देता है। CI सामग्री फ़ाइलों में परिवर्तन पर मैनिफ़ेस्ट पुनः उत्पन्न करने को अनिवार्य करता है, और जाँच के वास्तव में विफल हो सकने की पुष्टि के लिए जानबूझकर एक बाइट भ्रष्ट करता है। ## योगदान नई प्रविष्टियाँ तब स्वागत योग्य हैं जब आप **पुनरुत्पादन** और **नकारात्मक नियंत्रण** प्रदान कर सकें—केवल घटना रिपोर्ट पर्याप्त नहीं है, क्योंकि उसे यंत्रवत् जाँचा नहीं जा सकता। ## लाइसेंस यह रिपॉज़िटरी स्तरीय लाइसेंस का उपयोग करती है: **कोड MIT** है, **सामग्री सर्वाधिकार सुरक्षित** (स्रोत उल्लेख के साथ उद्धृत की जा सकती है)।