ಉಚಿತ-tier ಸರ್ವರ್ ಕ್ಯೂನಲ್ಲಿರುವ ಒಂದು AI-ಚಾಲಿತ ಕೋಡಿಂಗ್ ಅಸಿಸ್ಟೆಂಟ್, ಆಟೋಮ್ಯಾಟಿಕ್ ಕಾಂಟೆಕ್ಸ್ಟ್ ಕಾಂಪ್ಯಾಕ್ಷನ್ (context compaction) ಸಮಯದಲ್ಲಿ ಸಿಸ್ಟಮ್‌ನ “freeze migrations” ನಿಯಮವು ಮಾಯವಾದ ನಂತರ ಒಂದು schema-migration ಫೈಲ್ ಅನ್ನು ಬರೆಯಿತು. ದೀರ್ಘ ಚಾಟ್ ಸೆಷನ್‌ಗಳನ್ನು ಸಾರಾಂಶಗೊಳಿಸಿದಾಗ (summarized), ಸುರಕ್ಷತೆಯನ್ನು ಕಾಪಾಡಲು ಪ್ರಾಂಪ್ಟ್-ಆಧಾರಿತ ಸೂಚನೆಗಳನ್ನು ಅವಲಂಬಿಸುವುದು ಹಿಂತಿರುಗಿ ಹೊಡೆಯಬಹುದು ಎಂಬುದನ್ನು ಈ ಘಟನೆಯು ತೋರಿಸುತ್ತದೆ.

ಏನಾಯಿತು

ಒಂದು ಶೇರ್ಡ್ ಕೋಡಿಂಗ್ ಏಜೆಂಟ್ ಒಂದು ಸಿಸ್ಟಮ್ ಪ್ರಾಂಪ್ಟ್‌ನೊಂದಿಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿತ್ತು, ಅದರಲ್ಲಿ ಕೇವಲ ಒಂದು ನಿಯಮವಿತ್ತು: migration ಫೈಲ್‌ಗಳನ್ನು ರಚಿಸಬೇಡಿ ಅಥವಾ ಮಾರ್ಪಡಿಸಬೇಡಿ. ಡೆವಲಪರ್‌ಗಳು ದೈನಂದಿನ ಎಡಿಟ್‌ಗಳಿಗಾಗಿ ಏಜೆಂಟ್ ಅನ್ನು ಬಳಸುವಾಗ, ಈ ನಿಯಮವು ರಿಲೀಸ್ ಬ್ರಾಂಚ್‌ನಲ್ಲಿ schema migrations ಅನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಿ (frozen) ಇರಿಸಿತ್ತು.

ದೀರ್ಘವಾದ ಸೆಷನ್ ಸಮಯದಲ್ಲಿ ಸಂಭಾಷಣೆಯು ಮಾಡೆಲ್‌ನ ಟೋಕನ್ ಮಿತಿಯನ್ನು ಮೀರಿದವು. ಟೋಕನ್ ಬಜೆಟ್‌ನೊಳಗೆ ಇರಲು ಸರ್ವರ್ context compaction ಅನ್ನು ಬಳಸಿತು, ಇದು ಪೂರ್ಣ ಚಾಟ್ ಇತಿಹಾಸವನ್ನು ಒಂದು ಸಣ್ಣ ಸಾರಾಂಶದಿಂದ ಬದಲಾಯಿಸಿತು. ಈ ಸಾರಾಂಶವು ಫೈಲ್-ಪಾತ್ (file-path) ಉಲ್ಲೇಖಗಳನ್ನು ಉಳಿಸಿಕೊಂಡಿತು ಆದರೆ ನಕಾರಾತ್ಮಕ ನಿರ್ಬಂಧವನ್ನು (“do not write to migrations/**”) ತೆಗೆದುಹಾಕಿತು. ಮಾಡೆಲ್ ತನ್ನ ಮುಂದಿನ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ನೀಡಿದಾಗ, ಆ ಸ್ಥಗಿತಗೊಳಿಸುವ (freeze) ನಿಯಮವು ಅದರ ವರ್ಕಿಂಗ್ ಮೆಮೊರಿಯಲ್ಲಿ ಇರಲಿಲ್ಲ.

ನಂತರ ಏಜೆಂಟ್ ಕ್ವೇರಿ ವೇಗವನ್ನು ಸುಧಾರಿಸಲು ಒಂದು SQL ತಿದ್ದುಪಡಿ (tweak) ಅನ್ನು ಸೂಚಿಸಿತು. ಅದರೊಂದಿಗೆ ಬಂದ ಟೂಲ್ ಆ ಬದಲಾವಣೆಯನ್ನು ಡಿಸ್ಕ್‌ನಲ್ಲಿ ಒಂದು migration ಫೈಲ್ ಆಗಿ ಉಳಿಸಿತು. ಯೂನಿಟ್ ಟೆಸ್ಟ್‌ಗಳು (Unit tests) ಪಾಸಾದವು ಏಕೆಂದರೆ ಅವು ಎಂದಿಗೂ ರೊ (raw) SQL migrations ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವುದಿಲ್ಲ, ಮತ್ತು ಈ ಬದಲಾವಣೆಯು ನಂತರ ಕೋಡ್-ರಿವ್ಯೂ ಡಿಫ್‌ನಲ್ಲಿ (code-review diff) ಮಾತ್ರ ಕಂಡುಬಂದಿತು.

ಇದು ಏಕೆ ಮುಖ್ಯ

  • ಗಾರ್ಡ್‌ರೈಲ್‌ಗಳು (Guardrails) ಮಾಯವಾದವು: ಪ್ರಾಂಪ್ಟ್-ಮಟ್ಟದ ನೀತಿಗಳು ಅಸ್ಥಿರವಾಗಿರುತ್ತವೆ. ಮಾಡೆಲ್‌ನ ಕಾಂಟೆಕ್ಸ್ಟ್ ಸಂಕುಚಿತಗೊಂಡಾಗ, ಯಾವುದೇ "ಮಾಡಬೇಡಿ" ಎಂಬ ನಿಯಮವು ಕಣ್ಮರೆಯಾಗಬಹುದು, ಇದರಿಂದ ಸಿಸ್ಟಮ್ ನಿಷೇಧಿತ ಕ್ರಮಗಳನ್ನು ಮಾಡಲು ಮುಕ್ತವಾಗುತ್ತದೆ.
  • ಯೂನಿಟ್ ಟೆಸ್ಟ್‌ಗಳು ಸಾಕಾಗುವುದಿಲ್ಲ: migration ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ರನ್ ಮಾಡದ ಟೆಸ್ಟ್‌ಗಳು ಸುಳ್ಳು ಭದ್ರತೆಯ ಭಾವನೆಯನ್ನು ನೀಡಬಹುದು. ಟೆಸ್ಟ್ ಸೂಟ್ ಹೊಸ SQL ಅನ್ನು ಎಂದಿಗೂ ಪರೀಕ್ಷಿಸದ ಕಾರಣ ಈ ಬದಲಾವಣೆ ಪತ್ತೆಯಾಗದೆ ತಪ್ಪಿಹೋಯಿತು.
  • ಮಾನವ ವಿಮರ್ಶೆಯಲ್ಲಿ ವಿಳಂಬ: ವಿಮರ್ಶಕರು ಡಿಫ್ ಅನ್ನು ನೋಡುವಷ್ಟರಲ್ಲಿ, migration ಫೈಲ್ ಈಗಾಗಲೇ ಕಮಿಟ್ ಆಗಿತ್ತು, ಇದರಿಂದ ರೋಲ್‌ಬ್ಯಾಕ್ (rollback) ಅಥವಾ ಹೆಚ್ಚುವರಿ ಕ್ಲೀನಪ್ ಮಾಡಬೇಕಾಯಿತು.

ಈ ತಪ್ಪಿನಿಂದ ಔಟ್‌ೇಜ್ (outage) ಸಂಭವಿಸಲಿಲ್ಲ, ಆದರೆ ಅನಗತ್ಯ migration ಅನ್ನು ಹಿಂಪಡೆಯಲು (revert) ಹೆಚ್ಚುವರಿ ಕೆಲಸ ಮಾಡಬೇಕಾಯಿತು ಮತ್ತು ಲೈವ್ ಡೇಟಾಬೇಸ್‌ಗಳ ಮೇಲೆ ಇಂತಹದೇ ತಪ್ಪುಗಳು ಪರಿಣಾಮ ಬೀರುವ ಅಪಾಯವನ್ನು ಹೆಚ್ಚಿಸಿತು.

ಗಾರ್ಡ್‌ರೈಲ್ ಹೇಗೆ ವಿಫಲವಾಯಿತು

  1. ಕೇವಲ ಪ್ರಾಂಪ್ಟ್ ನಿಯಮ – ಸ್ಥಗಿತಗೊಳಿಸುವ ನಿಯಮವು ಸಿಸ್ಟಮ್ ಪ್ರಾಂಪ್ಟ್‌ನಲ್ಲಿ ಪ್ಲೇನ್ ಟೆಕ್ಸ್ಟ್ ಆಗಿತ್ತು.
  2. ದೀರ್ಘ ಸೆಷನ್ – ಚಾಟ್ ಮಾಡೆಲ್‌ನ ಕಾಂಟೆಕ್ಸ್ಟ್ ವಿಂಡೋ ಮೀರಿ ಬೆಳೆಯಿತು.
  3. ಕಾಂಪ್ಯಾಕ್ಷನ್ – ಸರ್ವರ್ ಪೂರ್ಣ ಸಂಭಾಷಣೆಯನ್ನು ನಾಮಪದಗಳನ್ನೇ ಹೆಚ್ಚಿರುವ ಸಾರಾಂಶದಿಂದ ಬದಲಾಯಿಸಿತು.
  4. ನಕಾರಾತ್ಮಕ ನಿರ್ಬಂಧದ ನಷ್ಟ – ಸಾರಾಂಶವು “ಮಾಡಬೇಡಿ” ಎಂಬ ಸೂಚನೆಯನ್ನು ಬಿಟ್ಟುಬಿಟ್ಟಿತು, ಇದರಿಂದ ನಿಯಮವು ಅಳಿಸಿಹೋಯಿತು.
  5. ಮಾಡೆಲ್ ಔಟ್‌ಪುಟ್ – ನಿಯಮವಿಲ್ಲದೆ, ಮಾಡೆಲ್ migration ರಚಿಸುವ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ನೀಡಿತು.

ಸಾರಾಂಶಗೊಳಿಸುವವರು (Summarizers) ನಾಮಪದಗಳನ್ನು (ಫೈಲ್ ಪಾತ್‌ಗಳು, ಫಂಕ್ಷನ್ ಹೆಸರುಗಳು) ಉಳಿಸಿಕೊಳ್ಳಲು ಮತ್ತು ನಕಾರಾತ್ಮಕ ಪದಗಳನ್ನು ಬಿಡಲು ಒಲವು ಹೊಂದಿರುತ್ತಾರೆ, ಅದಕ್ಕಾಗಿಯೇ ನಿಯಮವು ಮೌನವಾಗಿ ಮಾಯವಾಯಿತು.

ಪರಿಹಾರ: ಗಾರ್ಡ್‌ರೈಲ್‌ಗಳನ್ನು ರೈಟ್ ಪಾತ್‌ಗೆ (write path) ವರ್ಗಾಯಿಸಿ

ಪ್ರಾಂಪ್ಟ್‌ನಲ್ಲಿ ನಿಷೇಧಗಳನ್ನು ಸೇರಿಸುವ ಬದಲು, ಕೋಡ್ ಡಿಸ್ಕ್ ಅನ್ನು ಸ್ಪರ್ಶಿಸುವ ಸ್ಥಳದಲ್ಲಿ ಅವುಗಳನ್ನು ಜಾರಿಗೊಳಿಸಿ.

  1. ಪಾಲಿಸಿ ಫೈಲ್ ರಚಿಸಿ (ಉದಾಹರಣೆಗೆ, agent_policy.txt) ಇದು schema/** ಅಥವಾ migrations/** ನಂತಹ ನಿಷೇಧಿತ (deny-listed) ಪಾತ್‌ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ.
  2. Pre-apply ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಸೇರಿಸಿ ಇದು ಪಾಲಿಸಿ ಫೈಲ್ ಅನ್ನು ಓದುತ್ತದೆ ಮತ್ತು ಅಪ್ಲೈ ಟೂಲ್ ರನ್ ಆಗುವ ಮೊದಲು ಪ್ರತಿಯೊಂದು ಡಿಫ್ ಅನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡುತ್ತದೆ.
  3. Fail closed ಆಗಲಿ – ಪಾಲಿಸಿ ಫೈಲ್ ಇಲ್ಲದಿದ್ದರೆ, ಖಾಲಿ ಇದ್ದರೆ ಅಥವಾ ಡಿಫ್ ನಿಷೇಧಿತ ಪಾತ್ ಅನ್ನು ಸ್ಪರ್ಶಿಸಿದರೆ ಸಿಸ್ಟಮ್ ಕಾರ್ಯನಿರ್ವಹಿಸಬಾರದು.
  4. ನಿಷೇಧಿತ ಪಟ್ಟಿಯನ್ನು ಖಚಿತಪಡಿಸಲು ಮಾಡೆಲ್ ಅನ್ನು ಕೇಳಬೇಡಿ; ಖಚಿತಪಡಿಸುವಿಕೆಯು ಕೇವಲ ಒಂದು ಸಂಕೇತವೇ ಹೊರತು ಜಾರಿಗೊಳಿಸುವಿಕೆಯಲ್ಲ.

ಪ್ರಾಂಪ್ಟ್-ಮಾತ್ರ vs. ಡಿಸ್ಕ್-ಆಧಾರಿತ ಗಾರ್ಡ್‌ರೈಲ್‌ಗಳು

ಅಂಶ (Aspect) ಪ್ರಾಂಪ್ಟ್-ಮಾತ್ರ ಸ್ಥಗಿತ (Prompt-only freeze) ಡಿಸ್ಕ್-ಆಧಾರಿತ ಗೇಟ್ (Disk-based gate)
ಕಾಂಪ್ಯಾಕ್ಷನ್ ಅಪಾಯ (Compaction risk) ನಿಯಮ ಮಾಯವಾಗಬಹುದು ಪಾಲಿಸಿ ಫೈಲ್ ಅಖಂಡವಾಗಿರುತ್ತದೆ
ಯೂನಿಟ್-ಟೆಸ್ಟ್ ಕವರೇಜ್ (Unit-test coverage) ನಿಷೇಧಿತ ಬರವಣಿಗೆಗಳನ್ನು ತಪ್ಪಿಸಬಹುದು ಟೆಸ್ಟ್‌ಗಳಿದ್ದರೂ ಇಲ್ಲದಿದ್ದರೂ ಪಾತ್ ಚೆಕ್ ಬರವಣಿಕೆಯನ್ನು ತಡೆಯುತ್ತದೆ
ಮಾನವ ವಿಮರ್ಶೆಯ ಸಮಯ (Human review timing) ಹಾನಿಯು ಈಗಾಗಲೇ ಕಮಿಟ್ ಆಗಿರಬಹುದು ಬರವಣಿಗೆ ಎಂದಿಗೂ ಪ್ರಾರಂಭವಾಗುವುದಿಲ್ಲ, ವಿಮರ್ಶಕರಿಗೆ ಯಾವುದೇ ಬದಲಾವಣೆ ಕಾಣಿಸುವುದಿಲ್ಲ
ಅನುಷ್ಠಾನದ ಪ್ರಯತ್ನ (Implementation effort) ಕನಿಷ್ಠ (ಪ್ರಾಂಪ್ಟ್‌ನಲ್ಲಿ ಕೇವಲ ಒಂದು ಸಾ