એક ફ્રી-ટિયર સર્વર ક્યુ (queue) પર રહેલા AI-સંચાલિત કોડિંગ આસિસ્ટન્ટે સ્કીમા-માઈગ્રેશન ફાઇલ લખી નાખી, કારણ કે ઓટોમેટિક કોન્ટેક્સ્ટ કોમ્પેક્શન (context compaction) દરમિયાન સિસ્ટમનો “ફ્રીઝ માઈગ્રેશન્સ” (freeze migrations) નિયમ ગાયબ થઈ ગયો હતો. આ ઘટના દર્શાવે છે કે જ્યારે લાંબા ચેટ સેશન્સનો સારાંશ (summary) બનાવવામાં આવે છે, ત્યારે સુરક્ષા માટે માત્ર પ્રોમ્પ્ટ-આધારિત સૂચનાઓ પર નિર્ભર રહેવું નુકસાનકારક સાબિત થઈ શકે છે.

શું થયું હતું

એક શેર કરેલા કોડિંગ એજન્ટને એવા સિસ્ટમ પ્રોમ્પ્ટ સાથે ચલાવવામાં આવ્યો હતો જેમાં માત્ર એક જ નિયમ હતો: માઈગ્રેશન ફાઇલો બનાવશો નહીં અથવા તેમાં ફેરફાર કરશો નહીં. આ નિયમ દ્વારા રિલીઝ બ્રાન્ચ પર સ્કીમા માઈગ્રેશન્સને ફ્રીઝ (સ્થિર) રાખવામાં આવતા હતા, જ્યારે ડેવલપર્સ રૂટિન એડિટિંગ માટે એજન્ટનો ઉપયોગ કરતા હતા.

એક લાંબા સેશન દરમિયાન, વાતચીત મોડેલની ટોકન લિમિટથી વધી ગઈ. સર્વરે ટોકન બજેટમાં રહેવા માટે context compaction નો ઉપયોગ કર્યો, જેમાં સંપૂર્ણ ચેટ હિસ્ટ્રીને બદલે ટૂંકો સારાંશ (summary) મૂકવામાં આવ્યો. સારાંશમાં ફાઇલ-પાથના ઉલ્લેખો તો રાખવામાં આવ્યા હતા, પરંતુ નકારાત્મક પ્રતિબંધ (“migrations/** માં લખશો નહીં”) કાઢી નાખવામાં આવ્યો હતો. જ્યારે મોડેલે તેનો આગામી પ્રતિસાદ આપ્યો, ત્યારે ફ્રીઝ નિયમ તેની વર્કિંગ મેમરીમાં નહોતો.

ત્યારબાદ એજન્ટે ક્વેરી સ્પીડ સુધારવા માટે SQL માં ફેરફાર કરવાનું સૂચન કર્યું. તેની સાથેના ટૂલે આ ફેરફારને ડિસ્ક પર માઈગ્રેશન ફાઇલ તરીકે સેવ કરી લીધો. યુનિટ ટેસ્ટ પાસ થઈ ગયા કારણ કે તેઓ ક્યારેય રૉ (raw) SQL માઈગ્રેશન એક્ઝિક્યુટ કરતા નથી, અને આ ફેરફાર પછીથી કોડ-રિવ્યુ ડિફ (diff) માં જ જોવા મળ્યો.

તે શા માટે મહત્વનું છે

  • ગાર્ડરેલ્સ (Guardrails) ગાયબ થઈ ગયા: પ્રોમ્પ્ટ-લેવલની પોલિસી અસ્થિર હોય છે. જ્યારે મોડેલનો કોન્ટેક્સ્ટ કોમ્પ્રેસ થાય છે, ત્યારે કોઈપણ “નહીં કરો” (do not) વાળો ક્લોઝ ખોવાઈ શકે છે, જેનાથી સિસ્ટમ પ્રતિબંધિત કાર્યો કરવા માટે મુક્ત થઈ જાય છે.
  • યુનિટ ટેસ્ટ પૂરતા નથી: જે ટેસ્ટ માઈગ્રેશન સ્ક્રિપ્ટ્સ ચલાવતા નથી તે સુરક્ષાનો ખોટો અહેસાસ કરાવી શકે છે. આ ફેરફાર એટલા માટે છૂટી ગયો કારણ કે ટેસ્ટ સૂટમાં ક્યારેય નવા SQL નો ઉપયોગ કરવામાં આવ્યો નહોતો.
  • હ્યુમન રિવ્યુમાં વિલંબ થયો: રિવ્યુઅર દ્વારા ડિફ (diff) જોવામાં આવે ત્યાં સુધીમાં, માઈગ્રેશન ફાઇલ પહેલેથી જ કમિટ (commit) થઈ ગઈ હતી, જેના કારણે રોલબેક અથવા વધારાની સફાઈ (cleanup) કરવાની જરૂર પડી હતી.

આ ભૂલને કારણે કોઈ આઉટેજ (outage) તો નથી થયો, પરંતુ બિનજરૂરી માઈગ્રેશનને રિવર્ટ કરવા માટે વધારાનું કામ કરવું પડ્યું અને લાઈવ ડેટાબેઝને અસર કરી શકે તેવી સમાન ભૂલ થવાનું જોખમ વધ્યું.

ગાર્ડરેલ કેવી રીતે નિષ્ફળ ગયું

  1. માત્ર પ્રોમ્પ્ટ-આધારિત નિયમ – ફ્રીઝ નિયમ સિસ્ટમ પ્રોમ્પ્ટમાં સાદા ટેક્સ્ટ તરીકે હતો.
  2. લાંબો સેશન – ચેટ મોડેલના કોન્ટેક્સ્ટ વિન્ડોથી વધી ગઈ.
  3. કોમ્પેક્શન (Compaction) – સર્વરે સંપૂર્ણ ટ્રાન્સક્રિપ્ટને બદલે નામ-પ્રધાન (noun-heavy) સારાંશનો ઉપયોગ કર્યો.
  4. નકારાત્મક પ્રતિબંધનું નુકસાન – સારાંશમાં “નહીં કરો” સૂચના રહી ગઈ, જેનાથી નિયમ ભૂંસાઈ ગયો.
  5. મોડેલ આઉટપુટ – નિયમ વગર, મોડેલે માઈગ્રેશન બનાવતો પ્રતિસાદ આપ્યો.

સારાંશ બનાવનારા (Summarizers) સામાન્ય રીતે નામો (ફાઇલ પાથ, ફંક્શનના નામ) રાખે છે અને નકારાત્મક શબ્દો (negations) કાઢી નાખે છે, જેના કારણે આ નિયમ શાંતિથી ગાયબ થઈ ગયો.

ઉકેલ: ગાર્ડરેલ્સને રાઈટ પાથ (write path) પર લઈ જાઓ

પ્રોમ્પ્ટમાં પ્રતિબંધો મૂકવાને બદલે, જ્યાં કોડ ડિસ્કને સ્પર્શે (touch કરે) ત્યાં તેને લાગુ કરો.

  1. પોલિસી ફાઇલ બનાવો (દા.ત., agent_policy.txt) જે schema/** અથવા migrations/** જેવા પ્રતિબંધિત (deny-listed) પાથની યાદી ધરાવે છે.
  2. પ્રી-એપ્લાય સ્ક્રિપ્ટ ઉમેરો જે પોલિસી ફાઇલ વાંચે અને એપ્લાય ટૂલ ચાલતા પહેલા દરેક ડિફ (diff) ને સ્કેન કરે.
  3. જો પોલિસી ફાઇલ ગેરહાજર હોય, ખાલી હોય, અથવા જો ડિફ કોઈ પ્રતિબંધિત પાથને સ્પર્શ કરતું હોય, તો ફેઈલ ક્લોઝ (Fail closed) કરો.
  4. ડિનાય લિસ્ટની પુષ્ટિ કરવા માટે મોડેલને ન પૂછો; પુષ્ટિ એ માત્ર એક સંકેત છે, અમલીકરણ (enforcement) નથી.

માત્ર પ્રોમ્પ્ટ-આધારિત વિરુદ્ધ ડિસ્ક-આધારિત ગાર્ડરેલ્સ

પાસું (Aspect) માત્ર પ્રોમ્પ્ટ-આધારિત ફ્રીઝ ડિસ્ક-આધારિત ગેટ
કોમ્પેક્શન જોખમ નિયમ ગાયબ થઈ શકે છે પોલિસી ફાઇલ અકબંધ રહે છે
યુનિટ-ટેસ્ટ કવરેજ પ્રતિબંધિત રાઈટ્સ ચૂકી શકે છે ટેસ્ટ ગમે તે હોય, પાથ ચેક રાઈટને બ્લોક કરે છે
હ્યુમન રિવ્યુનો સમય નુકસાન પહેલેથી જ કમિટ થઈ ગયું હોઈ શકે છે રાઈટ ક્યારેય શરૂ થતું નથી, રિવ્યુઅર કોઈ ફેરફાર જોતો નથી
અમલીકરણનો પ્રયાસ ન્યૂનતમ (માત્ર પ્રોમ્પ્ટમાં એક લાઇન) નાની સ્ક્રિપ્ટ + પોલિસી ફાઇલ

વિરોધ પક્ષ (Counter-point)

આગળ શું જોવું

મુખ્ય વાત (Takeaway)

જો તમારે એવો નિયમ રાખવો હોય જેને ક્યારેય અવગણવામાં ન આવે—જેમ કે "ફ્રીઝ દરમિયાન કોઈ માઈગ્રેશન નહીં"—તો તેને ડિસ્ક પર સ્ટોર કરો અને રાઈટ પોઈન્ટ પર તેને લાગુ કરો. એકવાર મોડેલનો કોન્ટેક્સ્ટ કોમ્પ્રેસ થઈ જાય પછી માત્ર પ્રોમ્પ્ટ ટેક્સ્ટ ટકાઉપણું (durability) ની ખાતરી આપી શકતું નથી.