एक फ्री-टियर सर्वर क्यू (queue) पर काम करने वाले AI-संचालित कोडिंग असिस्टेंट ने एक स्कीमा-माइग्रेशन (schema-migration) फ़ाइल लिख दी, क्योंकि ऑटोमैटिक कॉन्टेक्स्ट कॉम्पेक्शन (context compaction) के दौरान सिस्टम का "माइग्रेशन फ्रीज़" (freeze migrations) नियम गायब हो गया था। यह घटना दर्शाती है कि सुरक्षा लागू करने के लिए प्रॉम्प्ट-आधारित निर्देशों पर भरोसा करना तब उल्टा पड़ सकता है जब लंबे चैट सत्रों का सारांश (summary) बनाया जाता है।

क्या हुआ

एक साझा कोडिंग एजेंट एक सिस्टम प्रॉम्प्ट के साथ चल रहा था जिसमें केवल एक नियम था: माइग्रेशन फ़ाइलों को न बनाएं या उनमें बदलाव न करें। इस नियम ने रिलीज़ ब्रांच पर स्कीमा माइग्रेशन को फ्रीज़ रखा, जबकि डेवलपर्स एजेंट का उपयोग नियमित संपादन (routine edits) के लिए कर रहे थे।

एक लंबे सत्र के दौरान, बातचीत मॉडल की टोकन सीमा (token limit) से बाहर निकल गई। सर्वर ने कॉन्टेक्स्ट कॉम्पेक्शन (context compaction) का उपयोग किया, जिससे टोकन बजट के भीतर रहने के लिए पूरी चैट हिस्ट्री को एक संक्षिप्त सारांश से बदल दिया गया। सारांश में फ़ाइल-पाथ (file-path) के उल्लेख तो रखे गए, लेकिन नकारात्मक प्रतिबंध (“migrations/** में न लिखें”) हटा दिया गया। जब मॉडल ने अपना अगला जवाब दिया, तो फ्रीज़ नियम उसकी वर्किंग मेमोरी में नहीं था।

इसके बाद एजेंट ने क्वेरी की गति सुधारने के लिए एक SQL ट्वीक (tweak) का सुझाव दिया। साथ में दिए गए टूल ने उस बदलाव को डिस्क पर एक माइग्रेशन फ़ाइल के रूप में सेव कर दिया। यूनिट टेस्ट पास हो गए क्योंकि वे कभी भी रॉ SQL माइग्रेशन को निष्पादित (execute) नहीं करते हैं, और यह बदलाव बाद में कोड-रिव्यू डिफ (code-review diff) में ही पकड़ा गया।

यह क्यों महत्वपूर्ण है

  • गार्डरेल्स (Guardrails) गायब हो गए: प्रॉम्प्ट-स्तर की नीतियां अस्थिर होती हैं। जब मॉडल का कॉन्टेक्स्ट कंप्रेस किया जाता है, तो कोई भी "न करें" (do not) वाला क्लॉज खो सकता है, जिससे सिस्टम प्रतिबंधित कार्य करने के लिए स्वतंत्र हो जाता है।
  • यूनिट टेस्ट पर्याप्त नहीं हैं: जो टेस्ट माइग्रेशन स्क्रिप्ट नहीं चलाते, वे सुरक्षा का झूठा अहसास दे सकते हैं। यह बदलाव इसलिए बच निकला क्योंकि टेस्ट सुइट ने कभी भी नए SQL का परीक्षण नहीं किया था।
  • मानवीय समीक्षा में देरी: जब तक रिव्यूअर ने डिफ (diff) देखा, माइग्रेशन फ़ाइल पहले ही कमिट (commit) हो चुकी थी, जिससे रोलबैक या अतिरिक्त सफाई की आवश्यकता पड़ी।

इस त्रुटि के कारण कोई आउटेज (outage) तो नहीं हुआ, लेकिन इसने एक अनावश्यक माइग्रेशन को वापस लेने (revert) के लिए अतिरिक्त काम करने पर मजबूर कर दिया और लाइव डेटाबेस को प्रभावित करने वाली इसी तरह की चूक का जोखिम बढ़ा दिया।

गार्डरेल कैसे विफल हुआ

  1. केवल प्रॉम्प्ट नियम – फ्रीज़ सिस्टम प्रॉम्प्ट में सादे टेक्स्ट के रूप में मौजूद था।
  2. लंबा सत्र – चैट मॉडल के कॉन्टेक्स्ट विंडो से बाहर बढ़ गई।
  3. कॉम्पेक्शन – सर्वर ने पूरी ट्रांसक्रिप्ट को संज्ञा-प्रधान (noun-heavy) सारांश से बदल दिया।
  4. नकारात्मक प्रतिबंध का नुकसान – सारांश में "न करें" निर्देश को छोड़ दिया गया, जिससे नियम मिट गया।
  5. मॉडल आउटपुट – नियम के बिना, मॉडल ने माइग्रेशन बनाने वाला जवाब दे दिया।

सारांश बनाने वाले (Summarizers) संज्ञाओं (फ़ाइल पाथ, फ़ंक्शन के नाम) को रखने और निषेधों (negations) को हटाने की प्रवृत्ति रखते हैं, यही कारण है कि नियम चुपचाप गायब हो गया।

समाधान: गार्डरेल्स को राइट पाथ (write path) पर ले जाएं

प्रॉम्प्ट में निषेधों को शामिल करने के बजाय, उन्हें वहां लागू करें जहां कोड डिस्क को छूता है।

  1. एक पॉलिसी फ़ाइल बनाएं (जैसे, agent_policy.txt) जो schema/** या migrations/** जैसे डिनाई-लिस्टेड (deny-listed) पाथ की सूची बनाती हो।
  2. एक प्री-अप्लाई स्क्रिप्ट जोड़ें जो पॉलिसी फ़ाइल को पढ़े और अप्लाई टूल चलने से पहले हर डिफ (diff) को स्कैन करे।
  3. फेल क्लोज्ड (Fail closed) रखें यदि पॉलिसी फ़ाइल गायब है, खाली है, या यदि कोई डिफ किसी प्रतिबंधित पाथ को छूता है।
  4. डिनाई लिस्ट की पुष्टि करने के लिए मॉडल से न पूछें; पुष्टि केवल एक संकेत है, प्रवर्तन (enforcement) नहीं।

केवल प्रॉम्प्ट बनाम डिस्क-आधारित गार्डरेल्स

पहलू (Aspect) केवल प्रॉम्प्ट फ्रीज़ डिस्क-आधारित गेट
कॉम्पेक्शन जोखिम नियम गायब हो सकता है पॉलिसी फ़ाइल सुरक्षित रहती है
यूनिट-टेस्ट कवरेज प्रतिबंधित राइट्स छूट सकते हैं टेस्ट के बावजूद पाथ चेक राइट को रोकता है
मानवीय समीक्षा का समय नुकसान पहले ही कमिट हो चुका हो सकता है राइट कभी शुरू ही नहीं होता, रिव्यूअर को कोई बदलाव नहीं दिखता
कार्यान्वयन प्रयास न्यूनतम (प्रॉम्प्ट में बस एक लाइन) छोटा स्क्रिप्ट + पॉलिसी फ़ाइल

काउंटर-पॉइंट

आगे क्या देखें

मुख्य बात (Takeaway)

यदि आपको ऐसे नियम की आवश्यकता है जिसे कभी भी अनदेखा नहीं किया जाना चाहिए—जैसे कि "फ्रीज़ के दौरान कोई माइग्रेशन नहीं"—तो इसे डिस्क पर स्टोर करें और राइट के समय इसे लागू करें। एक बार मॉडल का कॉन्टेक्स्ट कंप्रेस हो जाने के बाद, केवल प्रॉम्प्ट टेक्स्ट स्थायित्व (durability) की गारंटी नहीं दे सकता।