एका फ्री-टियर सर्व्हर क्यूवरील (free-tier server queue) AI-चालित कोडिंग असिस्टंटने स्कीमा-मायग्रेशन (schema-migration) फाईल तयार केली, कारण ऑटोमॅटिक कॉन्टेक्स्ट कॉम्पाक्शन (automatic context compaction) दरम्यान सिस्टमचा “freeze migrations” नियम नाहीसा झाला होता. ही घटना दर्शवते की, जेव्हा लांब चॅट सेशन्सचा सारांश (summary) काढला जातो, तेव्हा सुरक्षितता सुनिश्चित करण्यासाठी केवळ प्रॉम्प्ट-आधारित सूचनांवर अवलंबून राहणे उलटवू शकते.

काय घडले

एका शेअर केलेल्या कोडिंग एजंटला (coding agent) एक सिस्टम प्रॉम्प्ट देण्यात आला होता ज्यामध्ये एकच नियम होता: मायग्रेशन फाईल्स तयार करू नका किंवा त्यामध्ये बदल करू नका. डेव्हलपर्सनी एजंटचा वापर दैनंदिन संपादनासाठी (routine edits) करत असताना, या नियमामुळे रिलीज ब्रांचवर स्कीमा मायग्रेशन्स गोठवलेले (frozen) राहिले होते.

एका प्रदीर्घ सत्रादरम्यान (prolonged session), संभाषण मॉडेलच्या टोकन मर्यादेच्या (token limit) पलीकडे गेले. टोकन बजेटमध्ये राहण्यासाठी सर्व्हरने context compaction लागू केले, ज्यामध्ये संपूर्ण चॅट हिस्ट्रीच्या जागी एक छोटा सारांश ठेवला गेला. या सारांशाने फाईल-पाथचे (file-path) उल्लेख तर ठेवले, परंतु नकारात्मक अट (“migrations/** मध्ये लिहू नका”) काढून टाकली. जेव्हा मॉडेलने पुढचा प्रतिसाद तयार केला, तेव्हा तो 'freeze' नियम त्याच्या वर्किंग मेमरीमध्ये (working memory) नव्हता.

त्यानंतर एजंटने क्वेरीचा वेग सुधारण्यासाठी एका SQL बदलाचा (SQL tweak) सल्ला दिला. त्यासोबतच्या टूलने हा बदल डिस्कवर मायग्रेशन फाईल म्हणून सेव्ह केला. युनिट टेस्ट्स (Unit tests) पास झाल्या कारण त्या कधीही रॉ SQL मायग्रेशन्स एक्झिक्युट करत नाहीत, आणि हा बदल नंतर कोड-रिव्ह्यू डिफमध्ये (code-review diff) लक्षात आला.

हे का महत्त्वाचे आहे

  • गार्डरेल्स (Guardrails) नाहीसे झाले: प्रॉम्प्ट-लेव्हल पॉलिसी अस्थिर असतात. जेव्हा मॉडेलचा कॉन्टेक्स्ट कॉम्प्रेस केला जातो, तेव्हा कोणतीही “do not” अट गमावली जाऊ शकते, ज्यामुळे सिस्टम प्रतिबंधित कृती करण्यास मुक्त होते.
  • युनिट टेस्ट्स पुरेशा नाहीत: जे टेस्ट्स मायग्रेशन स्क्रिप्ट्स चालवत नाहीत, ते सुरक्षेचा खोटा आभास देऊ शकतात. हा बदल सुटला कारण टेस्ट सुईटने (test suite) नवीन SQL कधीही वापरले नव्हते.
  • मानवी पुनरावलोकन (Human review) उशिरा झाले: रिव्ह्यूअरने डिफ (diff) पाहण्यापूर्वीच मायग्रेशन फाईल कमिट (commit) झाली होती, ज्यामुळे रोलबॅक (rollback) किंवा अतिरिक्त क्लिनअपची आवश्यकता भासली.

या त्रुटीमुळे आउटेज (outage) झाला नाही, परंतु अनावश्यक मायग्रेशन रिव्हर्ट करण्यासाठी अतिरिक्त काम करावे लागले आणि लाइव्ह डेटाबेसवर (live databases) अशाच प्रकारची चूक होण्याची जोखीम वाढली.

गार्डरेल कसे फेल झाले

  1. केवळ प्रॉम्प्ट-आधारित नियम – 'Freeze' नियम सिस्टम प्रॉम्प्टमध्ये साध्या मजकूर स्वरूपात होता.
  2. दीर्घ सत्र – चॅट मॉडेलच्या कॉन्टेक्स्ट विंडोच्या (context window) पलीकडे गेले.
  3. कॉम्पाक्शन (Compaction) – सर्व्हरने संपूर्ण ट्रान्सक्रिप्टच्या जागी संज्ञा-प्रधान (noun-heavy) सारांश ठेवला.
  4. नकारात्मक अटीचा अभाव – सारांशाने “do not” सूचना वगळली, ज्यामुळे नियम पुसला गेला.
  5. मॉडेल आउटपुट – नियम नसल्यामुळे, मॉडेलने मायग्रेशन तयार करणारा प्रतिसाद तयार केला.

सारांश काढणारे अल्गोरिदम संज्ञा (फाईल पाथ, फंक्शनची नावे) ठेवतात आणि नकारार्थी शब्द (negations) काढून टाकतात, म्हणूनच हा नियम शांतपणे नाहीसा झाला.

उपाय: गार्डरेल्स 'राईट पाथ' (write path) कडे वळवा

प्रॉम्प्टमध्ये प्रतिबंधात्मक नियम समाविष्ट करण्याऐवजी, कोड जिथे डिस्कला स्पर्श करतो तिथे ते लागू करा.

  1. पॉलिसी फाईल तयार करा (उदा. agent_policy.txt) ज्यामध्ये schema/** किंवा migrations/** सारख्या 'डिनाय-लिस्टेड' (deny-listed) पाथची यादी असेल.
  2. प्री-अप्लाय स्क्रिप्ट (pre-apply script) जोडा जी पॉलिसी फाईल वाचेल आणि 'अप्लाय टूल' चालण्यापूर्वी प्रत्येक डिफ (diff) स्कॅन करेल.
  3. 'फेल क्लोज्ड' (Fail closed) धोरण वापरा – जर पॉलिसी फाईल गहाळ असेल, रिकामी असेल किंवा डिफ एखाद्या प्रतिबंधित पाथला स्पर्श करत असेल, तर प्रक्रिया थांबवा.
  4. मॉडेलला डिनाय लिस्टची पुष्टी करण्यास सांगू नका; पुष्टीकरण हे केवळ एक संकेत आहे, अंमलबजावणी (enforcement) नाही.

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

पैलू (Aspect) केवळ प्रॉम्प्ट-आधारित फ्रीझ (Prompt-only freeze) डिस्क-आधारित गेट (Disk-based gate)
कॉम्पाक्शनचा धोका (Compaction risk) नियम नाहीसा होऊ शकतो पॉलिसी फाईल सुरक्षित राहते
युनिट-टेस्ट कव्हरेज (Unit-test coverage) प्रतिबंधित राइट्स सुटू शकतात पाथ चेकमुळे टेस्ट्स काहीही असोत, राइट्स ब्लॉक होतात
मानवी पुनरावलोकनाची वेळ (Human review timing) नुकसान आधीच कमिट झाले असू शकते राइट कधीच सुरू होत नाही, रिव्ह्यूअरला कोणताही बदल दिसत नाही
अंमलबजावणीचा प्रयत्न (Implementation effort) किमान (फक्त प्रॉम्प्टमध्ये एक ओळ) लहान स्क्रिप्ट + पॉलिसी फाईल

प्रतिवाद (Counter-point)

पुढे काय पाहावे (What to watch next)

निष्कर्ष (Takeaway)

जर तुम्हाला असा नियम हवा असेल जो कधीही दुर्लक्षित केला जाऊ नये—जसे की “फ्रीझ दरम्यान कोणतेही मायग्रेशन नको”—तर तो डिस्कवर साठवा आणि तो लिहिण्याच्या (write) वेळी लागू करा. मॉडेलचा कॉन्टेक्स्ट कॉम्प्रेस झाल्यावर केवळ प्रॉम्प्ट मजकूर टिकाऊपणाची (durability) खात्री देऊ शकत नाही.