ఒక ఫ్రీ-టైర్ సర్వర్ క్యూలో ఉన్న AI-ఆధారిత కోడింగ్ అసిస్టెంట్, ఆటోమేటిక్ కాంటెక్స్ట్ కాంపాక్షన్ (context compaction) సమయంలో సిస్టమ్ యొక్క “freeze migrations” నియమం మాయమవ్వడంతో ఒక schema-migration ఫైల్‌ను రాసింది. సుదీర్ఘమైన చాట్ సెషన్‌లను సమ్మరైజ్ చేసినప్పుడు, భద్రతను అమలు చేయడానికి కేవలం ప్రాంప్ట్ ఆధారిత సూచనలపై ఆధారపడటం వల్ల నష్టాలు సంభవించవచ్చని ఈ సంఘటన చూపుతోంది.

ఏమి జరిగింది

ఒక షేర్డ్ కోడింగ్ ఏజెంట్ ఒక సిస్టమ్ ప్రాంప్ట్‌తో నడుస్తోంది, అందులో ఒకే ఒక నియమం ఉంది: migration ఫైల్‌లను సృష్టించవద్దు లేదా మార్చవద్దు. డెవలపర్లు ఏజెంట్‌ను సాధారణ ఎడిటింగ్ కోసం ఉపయోగిస్తున్నప్పుడు, ఈ నియమం ద్వారా schema migrations రిలీజ్ బ్రాంచ్‌లో ఫ్రీజ్ చేయబడ్డాయి.

సుదీర్ఘమైన సెషన్ సమయంలో, సంభాషణ మోడల్ యొక్క టోకెన్ పరిమితిని మించిపోయింది. టోకెన్ బడ్జెట్‌ను అందుబాటులో ఉంచడానికి సర్వర్ context compactionను అమలు చేసి, పూర్తి చాట్ హిస్టరీని ఒక చిన్న సమ్మరీతో భర్తీ చేసింది. ఆ సమ్మరీ ఫైల్-పాత్ (file-path) ప్రస్తావనలను ఉంచింది కానీ, నెగటివ్ కన్‌స్ట్రైంట్ (“do not write to migrations/**”) ను తొలగించింది. మోడల్ తన తదుపరి స్పందనను రూపొందించినప్పుడు, ఆ ఫ్రీజ్ నియమం దాని వర్కింగ్ మెమరీలో లేదు.

అప్పుడు ఆ ఏజెంట్ క్వెరీ వేగాన్ని మెరుగుపరచడానికి ఒక SQL మార్పును (tweak) సూచించింది. దానితో పాటు ఉన్న టూల్ ఆ మార్పును డిస్క్‌లో ఒక migration ఫైల్‌గా సేవ్ చేసింది. యూనిట్ టెస్ట్‌లు (Unit tests) పాస్ అయ్యాయి ఎందుకంటే అవి ఎప్పుడూ రా (raw) SQL migrationsను అమలు చేయవు, మరియు ఆ మార్పును కోడ్-రివ్యూ డిఫ్ (code-review diff) లో మాత్రమే తర్వాత గుర్తించారు.

ఇది ఎందుకు ముఖ్యం

  • గార్డ్‌రైల్స్ మాయమవ్వడం: ప్రాంప్ట్-లెవల్ పాలసీలు అస్థిరమైనవి. మోడల్ కాంటెక్స్ట్ కంప్రెస్ అయినప్పుడు, ఏదైనా “do not” క్లాజ్ (clause) కోల్పోవచ్చు, దీనివల్ల సిస్టమ్ నిషేధించబడిన పనులను చేయడానికి అవకాశం ఉంటుంది.
  • యూనిట్ టెస్ట్‌లు సరిపోవు: మైగ్రేషన్ స్క్రిప్ట్‌లను రన్ చేయని టెస్ట్‌లు తప్పుడు భద్రతా భావాన్ని కలిగించవచ్చు. టెస్ట్ సూట్ కొత్త SQLను ఎప్పుడూ పరీక్షించకపోవడం వల్ల ఆ మార్పు బయటపడకుండా వెళ్ళిపోయింది.
  • మానవ సమీక్ష ఆలస్యం అవ్వడం: రివ్యూయర్ డిఫ్‌ను చూసే సమయానికి, మైగ్రేషన్ ఫైల్ ఇప్పటికే కమిట్ చేయబడింది, దీనివల్ల రోల్‌బ్యాక్ (rollback) లేదా అదనపు క్లీనప్ అవసరమైంది.

ఈ లోపం వల్ల సర్వీస్ అంతరాయం (outage) కలగలేదు, కానీ అనవసరమైన మైగ్రేషన్‌ను వెనక్కి తీసుకోవడానికి అదనపు పని చేయాల్సి వచ్చింది మరియు లైవ్ డేటాబేస్‌లపై ఇటువంటి పొరపాట్లు జరిగే ప్రమాదాన్ని పెంచింది.

గార్డ్‌రైల్ ఎలా విఫలమైంది

  1. Prompt-only rule – ఫ్రీజ్ నియమం సిస్టమ్ ప్రాంప్ట్‌లో ప్లెయిన్ టెక్స్ట్‌గా ఉంది.
  2. Long session – చాట్ మోడల్ యొక్క కాంటెక్స్ట్ విండో కంటే ఎక్కువగా పెరిగింది.
  3. Compaction – సర్వర్ పూర్తి ట్రాన్స్‌క్రిప్ట్‌ను నామవాచకాలతో (nouns) కూడిన సమ్మరీతో మార్చింది.
  4. Negative constraint loss – సమ్మరీ “do not” సూచనను వదిలివేసింది, తద్వారా నియమం చెరిపివేయబడింది.
  5. Model output – నియమం లేకపోవడంతో, మోడల్ మైగ్రేషన్‌ను సృష్టించే స్పందనను ఇచ్చింది.

సమ్మరైజర్లు సాధారణంగా నామవాచకాలను (file paths, function names) ఉంచుతాయి మరియు నెగేషన్లను (negations) వదిలివేస్తాయి, అందుకే ఆ నియమం నిశ్శబ్దంగా మాయమైంది.

పరిష్కారం: గార్డ్‌రైల్స్‌ను రైట్ పాత్‌కు (write path) మార్చండి

ప్రాంప్ట్‌లో నిషేధాలను చేర్చడానికి బదులుగా, కోడ్ డిస్క్‌ను తాకే చోట వాటిని అమలు చేయండి.

  1. schema/** లేదా migrations/** వంటి డెనై-లిస్ట్ (deny-listed) పాత్‌లను జాబితా చేసే ఒక పాలసీ ఫైల్‌ను (ఉదా: agent_policy.txt) సృష్టించండి.
  2. అప్లై టూల్ రన్ కావడానికి ముందు పాలసీ ఫైల్‌ను చదివి, ప్రతి డిఫ్‌ను స్కాన్ చేసే ఒక pre-apply స్క్రిప్ట్‌ను జోడించండి.
  3. పాలసీ ఫైల్ లేకపోయినా, ఖాళీగా ఉన్నా లేదా డిఫ్ ఏదైనా నిషేధిత పాత్‌ను తాకినా, Fail closed (అంటే ప్రక్రియను నిలిపివేయండి) చేయండి.
  4. డెనై లిస్ట్‌ను ధృవీకరించమని మోడల్‌ను అడగవద్దు; ధృవీకరణ అనేది కేవలం ఒక సంకేతం మాత్రమే, అమలు కాదు.

Prompt-only వర్సెస్ disk-based గార్డ్‌రైల్స్

అంశం (Aspect) Prompt-only freeze Disk-based gate
Compaction రిస్క్ నియమం మాయమవ్వచ్చు పాలసీ ఫైల్ అలాగే ఉంటుంది
Unit-test కవరేజ్ నిషేధిత రైట్‌లను మిస్ చేయవచ్చు టెస్ట్‌లతో సంబంధం లేకుండా పాత్ చెక్ రైట్‌ను అడ్డుకుంటుంది
మానవ సమీక్ష సమయం నష్టం ఇప్పటికే జరిగి ఉండవచ్చు రైట్ అసలు మొదలవ్వదు, రివ్యూయర్ ఎటువంటి మార్పును చూడరు
అమలు చేసే ప్రయత్నం (Implementation effort) కనిష్టంగా ఉంటుంది (ప్రాంప్ట్‌లో ఒక లైన్ మాత్రమే) చిన్న స్క్రిప్ట్ + పాలసీ ఫైల్

కౌంటర్-పాయింట్ (Counter-point)

తదుపరి ఏమి గమనించాలి (What to watch next)

ముగింపు (Takeaway)

మీకు ఎప్పటికీ విస్మరించకూడదు అనుకునే నియమం ఉంటే—ఉదాహరణకు “ఫ్రీజ్ సమయంలో మైగ్రేషన్లు వద్దు”—దాన్ని డిస్క్‌లో నిల్వ చేయండి మరియు రైట్ చేసే సమయంలోనే దానిని అమలు చేయండి. మోడల్ కాంటెక్స్ట్ కంప్రెస్ అయిన తర్వాత, కేవలం ప్రాంప్ట్ టెక్స్ట్ మాత్రమే మన్నికను (durability) హామీ ఇవ్వలేదు.