जून 2026
A Best-of-Breed Chain for AI-Assisted Software Development
क्यों vibe coding का कठिन हिस्सा उत्पादन नहीं बल्कि सत्यापन है, और कैसे Claude Code, GitHub, Vercel, Next.js और Postgres उस लूप को पूरा करते हैं जिस पर हम Nashua 360 प्लेटफ़ॉर्म बनाते हैं
सार
एक सक्षम कोडिंग एजेंट सॉफ़्टवेयर विकास की अर्थव्यवस्था को बदल देता है: कोड लिखना, वह गतिविधि जो पहले किसी डेवलपर के दिन पर हावी रहती थी, तेज़ और लगभग मुफ़्त हो जाती है, जबकि उसके इर्द-गिर्द की गतिविधियाँ, यानी यह तय करना कि क्या बनाना है और यह सुनिश्चित करना कि परिणाम सही है, वैसी ही बनी रहती हैं। बाधा उत्पादन से हटकर सत्यापन पर आ जाती है। यह शोध-पत्र तर्क देता है कि एक एआई-सहायित विकास व्यवस्था का मूल्य उस मॉडल में नहीं है जो कोड लिखता है बल्कि उसके इर्द-गिर्द की उपकरणों की उस शृंखला में है जो किसी टीम को एजेंट के उत्पादित काम को गति से सत्यापित करने देती है और जो उसकी ग़लतियों को उपयोगकर्ताओं तक पहुँचने से पहले पकड़ लेती है। यह उस शृंखला का एक तकनीकी, सुविचारित विवरण है जिस पर हम नाशुआ में अपना उत्पाद, Nashua 360 Enterprise Platform, बनाते और चलाते हैं, और इस बात का विवरण कि प्रत्येक कड़ी वैसी क्यों है जैसी वह है: एजेंट के रूप में Claude Code, जो शृंखला के बाक़ी हिस्से के साथ एक लूप में चलता है और एक मोबाइल ऐप से पहुँच में है ताकि एक बदलाव शुरू किया जा सके और एक परिणाम फ़ोन से समीक्षित किया जा सके; रीढ़ के रूप में GitHub, एक संरक्षित main ब्रांच, अपेक्षित स्टेटस चेक, और बदलाव की इकाई के रूप में एक pull request के साथ; Vercel, जो हर pull request को उसका अपना पृथक, चलता हुआ प्रीव्यू डिप्लॉयमेंट देता है; Next.js, एक टाइप-युक्त, पारंपरिक फ़्रेमवर्क के रूप में जिसका टाइप चेकर पहला और सबसे सस्ता गेट है और जिसके रेंडरिंग तथा रनटाइम मॉडल में एजेंट धाराप्रवाह विचरण करता है; और PostgreSQL, टिकाऊ अवस्था के रूप में, जिसे समीक्षित, प्रतिवर्ती माइग्रेशनों के ज़रिए बदला जाता है। हम उन हिस्सों में जाते हैं जिनकी व्यवसायी परवाह करते हैं: एजेंट को संदर्भ कैसे दिया जाता है और उसे ईमानदार कैसे रखा जाता है, सतत एकीकरण में क्या चलता है, एक प्रीव्यू डिप्लॉयमेंट वास्तव में क्या है, Next.js कैसे रेंडर करता है और कहाँ चलता है, और एक जीवंत डेटाबेस को तोड़े बिना कैसे बदला जाए। हम तर्क देते हैं कि एआई-सहायित काम के लिए best-of-breed का अर्थ है पारंपरिक, क्योंकि एजेंट उन्हीं उपकरणों को सबसे अच्छा लिखता है जिन्हें उसने सबसे अधिक देखा है, और हम लागतों के बारे में स्पष्टवादी हैं: वेंडर के साथ जुड़ाव, मानवीय समीक्षा गेट जिस अनुशासन की माँग करता है, व्यापक पहुँच वाले एजेंट का जोखिम, और डेटा की अप्रतिवर्तनीयता। यह व्यवसायी-उन्मुख सलाह है, कोई बेंचमार्क नहीं।
मुख्य शब्द: एआई-सहायित विकास; vibe coding; कोडिंग एजेंट; Claude Code; GitHub; Vercel; Next.js; PostgreSQL; सतत सुपुर्दगी; प्रीव्यू डिप्लॉयमेंट; कोड समीक्षा; डेटाबेस माइग्रेशन; डेवलपर टूलिंग; Nashua 360
1. परिचय
सॉफ़्टवेयर के अधिकांश इतिहास में दुर्लभ संसाधन लेखन ही था। किसी डेवलपर की कुशलता इस क्षमता से मापी जाती थी कि वह किसी अभिप्राय को सही कोड में बदल सके, और घंटे टाइप करने, चीज़ें ढूँढने, लाइब्रेरियों को आपस में जोड़ने, और उन छोटी ग़लतियों को ठीक करने में जाते थे जिन्हें कंपाइल त्रुटियाँ और विफल परीक्षण उजागर करते थे। एक सक्षम कोडिंग एजेंट इसका अधिकांश हटा देता है। उसे एक स्पष्ट निर्देश और एक कोडबेस तक पहुँच दीजिए, और वह मिनटों में एक चलता हुआ बदलाव बना देगा, उन्हीं मुहावरों में जिन्हें उसने लाखों बार देखा है, जिसमें बॉयलरप्लेट पहले से ही सही है। इस तरह काम करने का बोलचाल का नाम, जो 2025 की शुरुआत में प्रचलित हुआ, है vibe coding: जो आप चाहते हैं उसका वर्णन करना और मॉडल को उसे उत्पन्न करने देना, हर पंक्ति लिखकर नहीं बल्कि परिणामों से मार्गदर्शन करते हुए। यह सचमुच एक चरणीय बदलाव है, और इसे पूरी कहानी समझ बैठना आसान है।
यह पूरी कहानी नहीं है, क्योंकि कोड को प्रकट कर देना कभी भी सॉफ़्टवेयर का कठिन हिस्सा नहीं था, केवल श्रमसाध्य हिस्सा था। कठिन हिस्से हैं यह तय करना कि क्या बनाना है, और यह जानना कि जो बनाया गया वह वास्तव में सही, सुरक्षित और चलने योग्य है। ये तब सस्ते नहीं होते जब उत्पादन सस्ता होता है; यदि कुछ है तो वे और कठिन हो जाते हैं, क्योंकि अब समझने के लिए कहीं अधिक कोड है, जो किसी व्यक्ति के लिखने से तेज़ी से उत्पन्न हुआ है, एक ऐसे रचयिता द्वारा जो ग़लत होने पर भी आत्मविश्वासी है। सॉफ़्टवेयर विकास की बाधा खिसक जाती है। वह पहले उत्पादन पर बैठती थी, यानी कोई टीम कितनी तेज़ी से सही कोड लिख सकती है। किसी एजेंट के साथ वह सत्यापन पर बैठती है: कोई टीम कितनी तेज़ी से यह सुनिश्चित कर सकती है कि कोड सही है और उसे आगे जाने दे।
यह शोध-पत्र उस खिसकाव के उपकरणों के लिए परिणाम के बारे में है, और यह जानबूझकर ठोस है। यदि सत्यापन ही बाधा है, तो एक एआई-सहायित व्यवस्था सबसे मूल्यवान काम यह नहीं कर सकती कि तेज़ी से उत्पन्न करे, बल्कि यह कि किसी टीम को तेज़ी से और अधिक सुरक्षित रूप से सत्यापित करने में मदद करे, एजेंट की ग़लतियों को सस्ते में और जल्दी पकड़ते हुए। हम उस विशिष्ट शृंखला का वर्णन करते हैं जिसका उपयोग हम नाशुआ में अपना उत्पाद, Nashua 360 Enterprise Platform, बनाने और चलाने के लिए करते हैं, यानी एजेंट के रूप में Claude Code, संस्करण-नियंत्रित रीढ़ और समीक्षा गेट के रूप में GitHub, हर बदलाव के चलते हुए प्रीव्यू के लिए Vercel, एप्लिकेशन फ़्रेमवर्क के रूप में Next.js, और डेटाबेस के रूप में Postgres, और हम इसमें जाते हैं कि हर टुकड़ा वास्तव में कैसे काम करता है, क्योंकि मूल्य विवरण में ही है। प्रत्येक कड़ी किसी लूप को कसकर या कोई गेट जोड़कर अपना स्थान अर्जित करती है, व्यक्तिगत रूप से चतुर होकर नहीं।
यह योगदान एक तर्क और एक व्यावहारिक अनुशंसा है, कोई बेंचमार्क नहीं। खंड 2 बताता है कि एआई ने क्या बदला और क्या नहीं, और बाधा को स्थित करता है। खंड 3 शृंखला को एक लूप के रूप में प्रस्तुत करता है (चित्र 1), यह तर्क रखता है कि एजेंट-सहायित काम के लिए best-of-breed का अर्थ पारंपरिक है, और समझाता है कि स्वतंत्र गेट क्यों संयोजित होते हैं। खंड 4 से 9 पाँच टुकड़ों को एक-एक करके लेते हैं और उनकी आंतरिक रचना में जाते हैं, जिसमें वह रनटाइम आर्किटेक्चर शामिल है जो किसी डिप्लॉयमेंट में वास्तव में होता है (चित्र 2) और वह हिस्सा जो लोगों को चौंकाता है, कि एक बदलाव अब एक फ़ोन से शुरू और समीक्षित किया जा सकता है। खंड 10 से 12 मानवीय गेट और उसके विफलता-प्रकारों, वास्तविक लागतों, और शृंखला व्यवहार में कैसे चलती है, इन पर विचार करते हैं। आद्योपांत प्रश्न यही है: एक बार जब कोई एजेंट कोड लिख सकता है, तो एक टीम को उसके इर्द-गिर्द क्या रखना चाहिए ताकि तेज़ी से लिखने का अर्थ ग़लत चीज़ भेज देना न हो?
2. एआई ने क्या बदला, और क्या नहीं
2.1 वह खिसकाव
किसी एजेंट से आने वाला बदलाव सटीक रूप से कहना सबसे अच्छा है। बात यह नहीं है कि मशीन अब समस्या को समझती है; बात यह है कि किसी सुनिर्दिष्ट बदलाव का एक प्रशंसनीय, प्रायः सही, कार्यान्वयन उत्पन्न करने की लागत ढह गई है। जो डेवलपर किसी सुविधा पर एक दोपहर खर्च करता, वह उसका पहला संस्करण उतने ही समय में पा सकता है जितने में उसका वर्णन किया जाए, और कई संस्करण सस्ते में फेंक सकता है। काम का तरीक़ा रचना से हटकर निर्देशन की ओर खिसकता है: अभिप्राय बताना, परिणाम पढ़ना, दिशा सुधारना। यह वास्तविक उत्तोलन है, और जो टीम इसे अस्वीकार करेगी वह पीछे छूट जाएगी।
2.2 कोई रामबाण नहीं
यह बदलाव सीमित भी है, और वह सीमा पुरानी है। Brooks (1987) ने वह भेद खींचा जो यहाँ आज भी शासन करता है: सॉफ़्टवेयर की आकस्मिक जटिलता, यानी वह श्रम जो हमारे उपकरणों और भाषाओं द्वारा थोपा जाता है, न कि समस्या द्वारा, पर आक्रमण किया जा सकता है और उसे घटाया जा सकता है, पर आवश्यक जटिलता, यानी समस्या को समझना और एक सही समाधान निर्दिष्ट करना, स्वचालित रूप से नहीं हटाई जा सकती, क्योंकि वही तो समस्या है। एक कोडिंग एजेंट आकस्मिक जटिलता पर अब तक रचा गया सबसे सशक्त आक्रमण है: वह वाक्य-विन्यास, बॉयलरप्लेट, API की खोज, मुहावरे सोख लेता है। वह सारतत्त्व के बारे में कुछ नहीं करता। यह जानना कि व्यवसाय को क्या चाहिए, सही डिज़ाइन तय करना, और यह स्थापित करना कि कोई दिया गया बदलाव कुछ और तोड़े बिना वास्तव में उस ज़रूरत को पूरा करता है, मानवीय काम बना रहता है, और वही वह काम है जो हमेशा से कठिन था।
2.3 सत्यापन बाधा बन जाता है
दोनों को एक साथ रखिए और निष्कर्ष निकल आता है। उत्पादन, यानी आकस्मिक हिस्सा, अब तेज़ और सस्ता है। सत्यापन, जहाँ सारतत्त्व बसता है, कि यह बदलाव सही है, कि वह वही करता है जो चाहा गया था, कि उसने कुछ नहीं तोड़ा है, कि उसे उजागर करना सुरक्षित है, वैसा नहीं है। किसी भी पाइपलाइन में थ्रूपुट सबसे धीमे चरण से तय होता है, और जब उत्पादन सत्यापन से आगे निकल जाता है, तब सत्यापन बाधक अड़चन बन जाता है। जो टीम एक दिन में दस बदलाव उत्पन्न कर सकती है पर दो सत्यापित कर सकती है वह दो ही भेजेगी, और अनसत्यापित कोड का एक बैकलॉग जमा करेगी जो एक देयता है, परिसंपत्ति नहीं। इससे भी बुरा, एक एजेंट आत्मविश्वासी, सतही रूप से सही काम उत्पन्न करता है, इसलिए कम सत्यापन करने की, यानी जो सही दिखता है पर है नहीं उसे मर्ज कर देने की, लागत ठीक उसी समय बढ़ती है जब ऐसा करने का प्रलोभन बढ़ता है। इस शोध-पत्र का बाक़ी हिस्सा एक ऐसी शृंखला बनाने के बारे में है जिसका काम सत्यापन की सीमा को ऊपर उठाना और कम-सत्यापन को कठिन बनाना है।
3. शृंखला, और पारंपरिक क्यों जीतता है
3.1 लूप
एक अच्छी एआई-सहायित व्यवस्था एक लूप है, कोई उपकरण नहीं। चित्र 1 उसे खींचता है जिसका हम उपयोग करते हैं। एक डेवलपर एक अभिप्राय बताता है। Claude Code, यानी एजेंट, उसे एक ब्रांच पर एक बदलाव में बदल देता है, जीवंत कोड पर नहीं। वह बदलाव एक GitHub pull request बन जाता है, जहाँ दो स्वचालित गेट किसी के ध्यान के बिना चलते हैं: टाइप चेकर और सतत-एकीकरण सुइट। Vercel उस ब्रांच को एक वास्तविक, चलते हुए प्रीव्यू डिप्लॉयमेंट में बनाता है, यानी एप्लिकेशन की एक पूरी प्रति जिसमें बदलाव जीवंत है, अपने ही URL पर पहुँच में। एक मनुष्य बदलाव की समीक्षा करता है, diff पढ़ते हुए और प्रीव्यू में से क्लिक करके गुज़रते हुए, डेस्कटॉप पर या, बढ़ते हुए, एक फ़ोन पर। केवल तभी उसे main ब्रांच में मर्ज किया जाता है, जिसे Vercel production पर डिप्लॉय करता है, जिसके पीछे Postgres है। परिणाम अगले अभिप्राय को पोषित करता है। आरेख की बात यह है कि एजेंट एक खाने में बैठता है; हर दूसरा खाना एक लूप का बंद होना या एक गेट का पकड़ना है, और सुरक्षा तथा गति वहीं से आती है।
3.2 best-of-breed का अर्थ है पारंपरिक
उपकरण चुनने का सामान्य तरीक़ा है उन्हें शक्ति के अनुसार क्रमित करना और सबसे सक्षम को चुनना। एक एजेंट-सहायित शृंखला के लिए कसौटी भिन्न है, और यह इस शोध-पत्र का सबसे उपयोगी विचार है। एक एजेंट उन्हीं उपकरणों को सबसे अच्छा लिखता है जिन्हें उसने सबसे अधिक देखा है। किसी फ़्रेमवर्क या डेटाबेस पर उसकी दक्षता इस बात का फलन है कि उस उपकरण का उपयोग करने वाला कितना सही कोड उसके प्रशिक्षण में था, और वह मात्रा उपकरण की लोकप्रियता, उसके प्रलेखन, और उसकी परंपराओं की स्थिरता के अनुरूप होती है। इसलिए एक मुख्यधारा का, सुप्रलेखित, परंपरा-प्रधान उपकरण केवल एक सुरक्षित मानवीय चुनाव ही नहीं है; यह वह चुनाव है जिस पर एजेंट सबसे सक्षम है और एक ऐसा API गढ़ने की सबसे कम संभावना रखता है जो अस्तित्व में ही नहीं है। प्रभाव संयोजित होता है: लोकप्रिय उपकरणों को अधिक एजेंट-उत्पादित कोड मिलता है, जो काम करता है, जो उनकी लोकप्रियता को सुदृढ़ करता है। एआई-सहायित विकास के लिए best-of-breed और सबसे-पारंपरिक अभिसरित हो चुके हैं, और तालिका 1 का हर उपकरण इसी को ध्यान में रखकर चुना गया था। यह एक चेतावनी भी है: वह विदेशी फ़्रेमवर्क जिसे कोई मानव विशेषज्ञ शानदार ढंग से चला सकता है, प्रायः ठीक वही जगह है जहाँ एजेंट सबसे कमज़ोर है, क्योंकि उसने उसे सबसे कम देखा है।
3.3 स्वतंत्र गेट क्यों संयोजित होते हैं
शृंखला किसी एक जाँच पर भरोसा नहीं करती। वह एक बदलाव को कई गेटों के ज़रिए सत्यापित करती है जो सचमुच अलग-अलग चीज़ें देखते हैं: टाइप चेकर आकृतियाँ जाँचता है, सतत-एकीकरण परीक्षण व्यवहार जाँचते हैं, प्रीव्यू डिप्लॉयमेंट चलता हुआ परिणाम दिखाता है, और मानवीय समीक्षक अभिप्राय का निर्णय करता है। चूँकि गेट काफ़ी हद तक स्वतंत्र हैं, उनकी चूकें जुड़ने के बजाय गुणित होती हैं: कोई दोष production तक केवल तभी पहुँचता है जब हर गेट उसे पकड़ने में विफल हो, इसलिए चार मामूली गेट जो प्रत्येक अपने देखे हुए का अधिकांश पकड़ते हैं, जो वे चूकते हैं उसके गुणनफल का केवल एक छोटा अंश ही आगे जाने देते हैं। यह वही गहन-रक्षा सिद्धांत है जिसे सुरक्षा इंजीनियरिंग में अपूर्ण अवरोधों की परत-दर-परत के रूप में लंबे समय से जाना जाता है (Reason, 2000), और इसका एक तीखा व्यावहारिक उपसिद्धांत है। किसी एक गेट को हटाना या कमज़ोर करना, प्रीव्यू छोड़ देना, किसी सख़्त टाइप को बंद कर देना, बिना पढ़े स्वीकृति दे देना, थोड़ा जोखिम नहीं जोड़ता; यह बच-निकलने की दर को उससे गुणा कर देता है जितना वह गेट पहले पकड़ता था उसके व्युत्क्रम से। सुरक्षित रहने का सबसे सस्ता तरीक़ा है कई भिन्न, अपूर्ण गेटों को ईमानदार बनाए रखना, जो ठीक वही है जिसके लिए शृंखला व्यवस्थित की गई है।
तालिका 1. शृंखला। प्रत्येक कड़ी उस लूप के लिए चुनी गई है जिसे वह बंद करती है या उस गेट के लिए जिसे वह जोड़ती है, और इतना पारंपरिक होने के लिए कि एजेंट उसे अच्छी तरह संभाल ले। अंतिम स्तंभ नाम देता है कि कड़ी मुख्यतः किससे रक्षा करती है।
| कड़ी | हम क्या उपयोग करते हैं | जो लूप यह बंद करती है या गेट यह जोड़ती है | यह किससे रक्षा करती है |
|---|---|---|---|
| कोडिंग एजेंट | Claude Code (CLI, क्लाउड और मोबाइल) | अभिप्राय को एक ब्रांच पर बदलाव में बदलती है; सौंपने से पहले स्वयं जाँच और परीक्षण चलाती है | किसी मनुष्य द्वारा आकस्मिक काम हाथ से करना; धीमा पुनरावर्तन |
| स्रोत नियंत्रण और समीक्षा | GitHub (ब्रांच, pull request, Actions) | हर बदलाव एक समीक्षा-योग्य diff है; बिना समीक्षा के कुछ भी main ब्रांच तक नहीं पहुँचता; हर एक पर CI चलता है | बिना समीक्षा का बदलाव production तक पहुँचना; खोया इतिहास; कोई ऑडिट ट्रेल नहीं |
| प्रीव्यू और डिप्लॉयमेंट | Vercel (git से जुड़ा) | हर pull request का एक पृथक, चलता हुआ प्रीव्यू अपने ही URL पर; एक-क्लिक production डिप्लॉय और रोलबैक | ऐसे कोड की समीक्षा जिसे आप चलता हुआ नहीं देख सकते; जोखिम भरे रिलीज़ |
| वेब फ़्रेमवर्क | Next.js (TypeScript) | पहले स्वचालित गेट के रूप में टाइप; पारंपरिक, फ़ाइल-आधारित संरचना जिसमें एजेंट अच्छी तरह विचरण करता है | दोष के वे पूरे वर्ग जिन्हें टाइप चेकर अस्वीकार करता है; एजेंट का रास्ता भटक जाना |
| डेटाबेस | PostgreSQL (मैनेज्ड) | टिकाऊ, ट्रांज़ैक्शनल अवस्था, समीक्षित, संस्करणित माइग्रेशनों के साथ | डेटा हानि; मौन स्कीमा विचलन; अदोहराने योग्य परिवेश |
| मानवीय समीक्षा गेट | एक व्यक्ति, pull request पर | वह निर्णय जिसे कोई गेट स्वचालित नहीं करता: क्या यह वही है जो हम चाहते थे, और क्या यह सुरक्षित है? | आत्मविश्वास से ग़लत कोड जो हर स्वचालित जाँच पार कर गया |
4. एजेंट: Claude Code कैसे फ़िट होता है
Claude Code ही एजेंट है: एक ऐसा उपकरण जो कोडबेस पढ़ता है, फ़ाइलें लिखता और संपादित करता है, कमांड चलाता है, परीक्षण निष्पादित करता है, और pull request खोलता है, एक निर्देश से काम करते हुए और जो परिणाम वह देखता है उनके विरुद्ध ख़ुद को सुधारते हुए। उसे कैसे चलाया जाता है यह मॉडल की कच्ची क्षमता से अधिक मायने रखता है, और उसके बारे में तीन बातें एक व्यवसायी के ध्यान के योग्य हैं।
पहली है संदर्भ। एक एजेंट उतना ही अच्छा होता है जितना वह आपके कोडबेस के बारे में जानता है, और सबसे अधिक उत्तोलन वाली कलाकृति है एक चेक-इन की गई परंपराओं की फ़ाइल, हमारे मामले में एक प्रोजेक्ट CLAUDE.md, जो एजेंट को घर के नियम बताती है: प्रोजेक्ट कैसे व्यवस्थित है, टाइप चेकर और परीक्षण कैसे चलाएँ, क्या डिप्लॉय करना है और कैसे, किसे कभी न छुएँ। एजेंट उसे हर रन पर पढ़ता है, इसलिए एक बार लिखा गया सुधार दोहराना बंद कर देता है। उसके इर्द-गिर्द एक व्यापक सतह बैठती है, दोहराए जाने वाले कामों के लिए पुनःप्रयोज्य skills, hooks जो किसी नियम को यांत्रिक रूप से लागू करने के लिए टूल कॉल पर चलते हैं, और MCP सर्वर जो एजेंट को बाहरी सिस्टमों तक, जिनमें GitHub भी शामिल है, टाइप-युक्त पहुँच देते हैं, ताकि वह pull request को स्क्रीन-स्क्रैपिंग के बजाय प्रथम-श्रेणी क्रियाओं के रूप में खोल और अद्यतन कर सके। संदर्भ अभियांत्रिकी, यानी यह तय करना कि एजेंट को क्या जानना और क्या करने में सक्षम होना चाहिए, किसी एजेंट को अपनाने का असली काम है, और यह साधारण सॉफ़्टवेयर स्वच्छता है: परंपराएँ लिख लीजिए, जाँचों को चलाने योग्य बनाइए, सतह को छोटा रखिए।
दूसरी यह कि एजेंट अलगाव में नहीं बल्कि लूप में चलता है। उससे अपेक्षा की जाती है कि वह टाइप चेकर और परीक्षण स्वयं चलाए, जो वे रिपोर्ट करें उसे पढ़े, और उसे ठीक करे, किसी मनुष्य के देखने से पहले, ताकि जब तक कोई pull request खुले तब तक शृंखला के स्वचालित गेट पहले से ही हरे हों। बड़े कामों के लिए वह काम को subagents में बाँट सकता है जो प्रत्येक अपना संदर्भ साथ रखते हैं और वापस रिपोर्ट करते हैं, जो मुख्य धारा को केंद्रित और संदर्भ को स्वच्छ रखता है। अनुशासन यह है कि तेज़, सस्ती फ़ीडबैक, यानी टाइप और परीक्षण, एजेंट के अपने लूप के भीतर होने दी जाए, और धीमी, महँगी फ़ीडबैक, यानी मनुष्य, को अंत के लिए सुरक्षित रखा जाए।
तीसरी है कि वह कहाँ चलता है। टर्मिनल से परे, Claude Code एक मोबाइल ऐप से पहुँच में एक क्लाउड सत्र के रूप में चलता है, जो कार्य-दिवस का आकार बदल देता है। एक बदलाव कहीं जाते हुए फ़ोन से शुरू किया जा सकता है, क्लाउड में चलने के लिए छोड़ा जा सकता है, और उसका pull request तथा प्रीव्यू बाद में उसी फ़ोन से समीक्षित और स्वीकृत किया जा सकता है। हम इसके बारे में जानबूझकर सावधान हैं, इसलिए नहीं कि मोबाइल पर काम कोई नवीनता है बल्कि इसलिए कि यह लूप को छोटा करता है: कुछ ध्यान में आने और बदलाव शुरू करने के बीच का, और एक बदलाव के तैयार होने तथा किसी के उसे स्वीकृत करने के बीच का अंतराल, घंटों से मिनटों तक सिकुड़ जाता है, जो एक सत्यापन-बद्ध संसार में ठीक वही अंतराल है जिसे बंद करना सार्थक है।
5. रीढ़: GitHub
GitHub शृंखला का वह हिस्सा है जो बाक़ी सब कुछ सुरक्षित बनाता है, और वह सबसे कम चमकदार है। वह सत्य का एकल स्रोत, यानी रिपॉज़िटरी, धारण करता है, और वह नियम लागू करता है जिस पर पूरा तर्क टिका है: main ब्रांच, वह जो भेजती है, संरक्षित है, और उस तक केवल एक pull request के ज़रिए पहुँचा जा सकता है जिसे किसी मनुष्य ने स्वीकृत किया हो और जिसके अपेक्षित स्टेटस चेक पास हो चुके हों। एजेंट कभी production कोड सीधे संपादित नहीं करता; वह एक ब्रांच पर प्रस्ताव रखता है, और वह प्रस्ताव एक diff है जिसे कोई मनुष्य पढ़ सकता है और कोई मशीन परीक्षण कर सकती है।
अपेक्षित जाँचें ही वह जगह हैं जहाँ स्वचालित गेट रहते हैं। हर pull request पर, GitHub Actions वह सुइट चलाता है जिस पर हम किसी भी चीज़ के मर्ज होने से पहले ज़ोर देते हैं: टाइप चेकर, लिंटर, परीक्षण सुइट, और एक production बिल्ड, प्रत्येक एक अपेक्षित स्टेटस जो मर्ज बटन को तब तक रोकता है जब तक वह हरा न हो। चूँकि ये किसी के अनुशासन के बजाय प्लेटफ़ॉर्म द्वारा लागू होते हैं, इन्हें जल्दबाज़ी में छोड़ा नहीं जा सकता, और चूँकि एजेंट जानता है कि ये चलेंगे, वह इन्हें पहले संतुष्ट करता है। pull request बदलाव की इकाई है: छोटी, स्वयं-निहित, व्यक्तिगत रूप से समीक्षा-योग्य और व्यक्तिगत रूप से प्रतिवर्तनीय, जो समीक्षा को सस्ता और इतिहास को सुपाठ्य रखता है। और चूँकि हर बदलाव एक लेखक और एक संदेश वाला कमिट है, इतिहास एक ऑडिट ट्रेल है और अनडू संपूर्ण है, एजेंट ने जो कुछ किया उसे देखा, श्रेय दिया और प्रतिवर्तित किया जा सकता है। एक कोडिंग एजेंट एक तेज़, सशक्त और त्रुटि-योग्य कर्ता है, और GitHub वह संरचना है जो एक को खुला छोड़ देना सुरक्षित बनाती है, यह सुनिश्चित करके कि वह जो कुछ करे वह अनसमीक्षित, अपरीक्षित या अप्रतिवर्तनीय न हो।
6. आँखें: Vercel
एक diff पढ़ना आपको बताता है कि क्या बदला; वह नहीं बताता कि बदलाव करता क्या है। Vercel उस अंतराल को हर pull request को एक प्रीव्यू डिप्लॉयमेंट में बनाकर बंद करता है: एप्लिकेशन का एक संपूर्ण, पृथक, चलता हुआ उदाहरण जिसमें बदलाव लागू है, अपने ही URL पर, स्वचालित रूप से रचा गया और हर पुश पर अद्यतन। यह वह गेट है जो वह पकड़ता है जो टाइप और परीक्षण नहीं पकड़ते, यानी वह लेआउट जो टूट गया, वह प्रवाह जो एक कदम लंबा हो गया, वह चीज़ जो तकनीकी रूप से सही है और उपयोग में ग़लत, और यही अधिकांशतः वह कारण है कि शृंखला अंधी हुए बिना तेज़ी से चल सकती है। एक समीक्षक, और एजेंट, कोड से उसकी कल्पना करने के बजाय वास्तविक परिणाम में से क्लिक करके गुज़रते हैं।
प्रीव्यू को भरोसेमंद जो बनाता है वह यह है कि वह पूरे स्टैक का एक वास्तविक बिल्ड है, कोई मॉक नहीं (चित्र 2): वही फ़्रेमवर्क, वही रनटाइम, उसके अपने पर्यावरण चर, और, अच्छी तरह किया जाए तो, उसका अपना पृथक या ब्रांच किया गया डेटाबेस ताकि उसे चलाना production डेटा को छू न सके। डिप्लॉयमेंट अपरिवर्तनीय हैं: प्रत्येक एक अलग, पता-योग्य बिल्ड है, इसलिए किसी समीक्षित प्रीव्यू को production में उन्नत करना एक पॉइंटर का खिसकना है न कि एक पुनःबिल्ड, और एक ख़राब रिलीज़ एक घबराए हुए हॉटफ़िक्स के बजाय पिछले अपरिवर्तनीय डिप्लॉयमेंट पर एक तात्क्षणिक रोलबैक है। main ब्रांच में मर्ज पर वही मशीनरी जो प्रीव्यू बनाती थी production बनाती है, इसलिए जिस चीज़ की समीक्षा हुई वही चीज़ भेजी जाती है। इस शृंखला के मॉडल में, प्रीव्यू डिप्लॉयमेंट एक सस्ता, स्वचालित सत्यापन गेट हैं जिसकी दोष के एक ऐसे वर्ग के लिए उच्च पकड़-दर है जिसे कोई दूसरा गेट नहीं देखता।
7. git से निर्बाध: तीनों एक साथ क्यों फ़िट होते हैं
जिस कारण Claude Code, GitHub और Vercel तीन उपकरणों से कम और एक सिस्टम से अधिक महसूस होते हैं वह यह है कि वे एक एकल अंतरफलक साझा करते हैं, और वह अंतरफलक git है। Claude Code का स्वाभाविक निर्गत कोई डिप्लॉयमेंट नहीं है; वह एक ब्रांच और एक pull request है। GitHub का काम उन कमिटों को संग्रहित करना, जाँचें चलाना और समीक्षा धारण करना है। Vercel रिपॉज़िटरी पर नज़र रखता है और हर ब्रांच को एक प्रीव्यू तथा main ब्रांच को production में बदल देता है। इनमें से किसी को भी दूसरों के बारे में सिखाना नहीं पड़ा: एजेंट कभी कोई डिप्लॉयमेंट API नहीं सीखता, वह एक pull request खोलता है; Vercel कभी एजेंट के बारे में नहीं सीखता, वह रिपॉज़िटरी पर नज़र रखता है। उनके बीच की सीवन वह git प्रोटोकॉल है जिसे तीनों पहले से ही बोलते हैं, यही कारण है कि शृंखला में एक एजेंट जोड़ने से डिप्लॉयमेंट कैसे काम करता था इसके बारे में कुछ नहीं बदला, और यही कारण है कि एक प्रॉम्प्ट से production तक के पूरे पथ में कोई हस्तांतरण नहीं है।
परिणाम यह है कि डिप्लॉयमेंट किसी के द्वारा किया जाने वाला एक क़दम होना बंद कर देता है और उस git क्रिया का परिणाम बन जाता है जिसे वे वैसे भी करने वाले थे। एक पुश एक बिल्ड है। एक pull request एक प्रीव्यू परिवेश है, जो अपने आप रचा और समेट लिया जाता है। main ब्रांच में एक मर्ज एक production डिप्लॉय है। एक रिवर्ट एक रोलबैक है। कोई रिलीज़ नहीं चलाता; वे मर्ज करते हैं, और रिलीज़ हो जाती है। कोई बिल्ड सर्वर नहीं जिसे संभालना पड़े, कोई डिप्लॉय स्क्रिप्ट नहीं जिसे एजेंट ग़लत कर दे, कोई अलग उन्नयन उपकरण नहीं, कोई ऐसी खिड़की नहीं जिसमें किसी ने कोड लिख दिया हो पर अभी तक भेजा न हो। एक सत्यापन-बद्ध टीम के लिए घर्षण हटाने की यह ठीक सही जगह है: पथ में बचा एकमात्र सविचार, मानवीय कार्य समीक्षा है, जो वह एक कार्य है जिसे सविचार होना चाहिए, और उसके इर्द-गिर्द की हर यांत्रिक चीज़ git पर नज़र रखने वाले उपकरणों द्वारा संभाली जाती है।
यही कारण भी है कि यह निर्बाधता लापरवाह के बजाय सुरक्षित है, और दोनों गुण एक ही तथ्य से आते हैं। चूँकि डिप्लॉयमेंट git पर सवार होता है, वह git की गारंटियाँ विरासत में पाता है: हर production डिप्लॉय एक विशिष्ट समीक्षित कमिट से बँधा है, एक लेखक और एक संदेश के साथ; हर प्रीव्यू एक ब्रांच से बँधा है; और चूँकि डिप्लॉयमेंट अपरिवर्तनीय हैं, रोलबैक करना बस production को किसी पहले के कमिट के बिल्ड की ओर संकेतित करना है। वही वायरिंग जो एक फ़ोन-पर-टाइप किए प्रॉम्प्ट से एक जीवंत साइट तक एक बदलाव को किसी के डिप्लॉय कंसोल छुए बिना बहने देती है, यह भी सुनिश्चित करती है कि उस जीवंत साइट तक एक समीक्षित, श्रेय-योग्य, प्रतिवर्तनीय कमिट के अलावा कुछ न पहुँचे। एकीकरण एक मेल है, इसलिए नहीं कि वेंडरों ने उसका समन्वय किया बल्कि इसलिए कि तीनों git को सत्य के स्रोत के रूप में मानने के लिए बनाए गए थे, और जब एजेंट उस परंपरा में शामिल हुआ, तो उसे जिस पाइपलाइन की ज़रूरत थी वह पहले से ही मौजूद थी।
8. भू-भाग: Next.js
एजेंट को एक कोडबेस में विचरण करना पड़ता है, और कोडबेस का फ़्रेमवर्क ही भू-भाग है। Next.js दो कारणों से एक मज़बूत चुनाव है जो दोनों सत्यापन पर लौट आते हैं। पहला यह कि वह TypeScript है, और टाइप पहला तथा सबसे सस्ता गेट हैं। सख़्त मोड में चलाने पर, टाइप चेकर ग़लती के एक बड़े वर्ग को अस्वीकार कर देता है, यानी एक ग़लत आकृति, एक लुप्त फ़ील्ड, एक मान जो null हो सकता है, ठीक उसी क्षण जब एजेंट उसे लिखता है, जो ठीक वह समय है जब एक सुधार सबसे सस्ता होता है, कोड के चलने से पहले और किसी मनुष्य के देखने से बहुत पहले। हम यही विचार प्रोग्राम के किनारों तक धकेलते हैं, बाहरी इनपुट, अनुरोध निकाय, पर्यावरण चर, डेटाबेस पंक्तियों को एक स्कीमा के विरुद्ध मान्य करते हुए ताकि बाहर से आया अटाइप्ड डेटा भरोसा किए जाने के बजाय सीमा पर टाइप्ड और जाँचा हुआ हो जाए। यहाँ टाइप नौकरशाही नहीं हैं; वे वह गेट हैं जो एजेंट की सबसे आम ग़लती, यानी एक प्रशंसनीय आकृति जो सूक्ष्म रूप से ग़लत है, को एक लाल लहरिया रेखा में बदल देते हैं जिसे वह स्वयं ठीक कर लेता है।
दूसरा कारण यह है कि Next.js पारंपरिक है, और उसका मॉडल, हालाँकि समृद्ध है, इतना पगडंडी-घिसा हुआ है कि एजेंट उसे धाराप्रवाह लिखता है। उस मॉडल के बारे में ठोस होना सार्थक है, क्योंकि वहीं बहुत-सी इंजीनियरिंग बसती है। App Router डिफ़ॉल्ट रूप से सर्वर पर रेंडर करता है: Server Components सर्वर पर चलते हैं और अपना कोड कभी ब्राउज़र को नहीं भेजते, डेटा पहुँच और रहस्यों को सर्वर-साइड रखते हुए, जबकि Client Components, जो स्पष्ट रूप से चिह्नित होते हैं, अन्तःक्रियाशीलता वहन करते हैं। परिवर्तन Server Actions के ज़रिए होते हैं, यानी सर्वर फ़ंक्शन जिन्हें एक फ़ॉर्म या एक बटन सीधे कॉल कर सकता है, और Route Handlers API सतह प्रदान करते हैं। प्रत्येक रूट चुनता है कि वह कैसे रेंडर करे, बिल्ड समय पर स्थिर, किसी अनुसूची पर क्रमिक रूप से पुनःजनित, या प्रति अनुरोध गतिशील, और कहाँ चले, उपयोगकर्ता के निकट हल्का Edge रनटाइम या अधिक पूर्ण Node.js रनटाइम, जिसमें middleware अनुरोध से पहले चलकर प्रमाणीकरण और लोकल जैसी चीज़ें संभालता है। ये बहुत-से उत्तोलक हैं, पर ये सार्वजनिक, प्रलेखित, स्थिर उत्तोलक हैं जिन्हें एजेंट ने बड़े पैमाने पर सही ढंग से प्रयुक्त होते देखा है, इसलिए वह सही वाले की ओर हाथ बढ़ाता है, और फ़्रेमवर्क एक वास्तविक उत्पाद बनाने के लिए पर्याप्त सशक्त है जबकि वह भू-भाग बना रहता है जिस पर एजेंट सबसे सक्षम है, जो, खंड 3 के तर्क के अनुसार, वही संयोजन है जो मायने रखता है।
9. अवस्था: Postgres
ऊपर की हर चीज़ कोड से संबंधित है, जिसे बदलना सुरक्षित है क्योंकि वह संस्करणित और प्रतिवर्तनीय है। डेटा वैसा नहीं है: एक गिराया गया स्तंभ या एक ख़राब माइग्रेशन कुछ ऐसा नष्ट कर सकता है जिसे कोई कमिट बहाल नहीं कर सकता। Postgres शृंखला के तल पर टिकाऊ, ट्रांज़ैक्शनल अवस्था है, और उसके इर्द-गिर्द का अनुशासन कोड के इर्द-गिर्द की तुलना में जानबूझकर सख़्त है। PostgreSQL अपना स्थान उसी तरह अर्जित करता है जैसे शृंखला का बाक़ी हिस्सा, यानी वह पारंपरिक, युद्ध-परखा, शानदार ढंग से प्रलेखित चुनाव है, इसलिए एजेंट उसके विरुद्ध सही SQL और सही माइग्रेशन लिखता है, और एक मैनेज्ड इंस्टेंस मॉडल बदले बिना परिचालन श्रम हटा देता है।
सावधानी बदलाव में जाती है। स्कीमा परिवर्तन माइग्रेशन हैं: क्रमबद्ध, संस्करणित फ़ाइलें जो रिपॉज़िटरी में चेक-इन की जाती हैं और किसी भी अन्य बदलाव की तरह समीक्षित होती हैं, production से पहले प्रीव्यू के विरुद्ध चलाई जाती हैं, और प्रतिवर्तनीय होने के लिए लिखी जाती हैं। एक जीवंत डेटाबेस को वैसे नहीं बदला जा सकता जैसे एक नए को, इसलिए एक जोखिम भरा बदलाव सुरक्षित बदलावों के एक अनुक्रम के रूप में किया जाता है, यानी expand and contract पैटर्न (Ambler & Sadalage, 2006): नया स्तंभ या तालिका जोड़िए और उसमें लिखना शुरू कीजिए, बैकफ़िल कीजिए, पठन को उस पार ले जाइए, और केवल तभी, एक बाद के डिप्लॉयमेंट में, पुरानी आकृति हटाइए, ताकि हर मध्यवर्ती क़दम पर चलता हुआ कोड और स्कीमा संगत हों और क़दम प्रतिवर्तनीय हो। Postgres अधिकांश स्कीमा परिवर्तनों को ट्रांज़ैक्शनल बनाकर मदद करता है, ताकि एक विफल माइग्रेशन डेटाबेस को आधा-बदला छोड़ देने के बजाय स्वच्छता से रोलबैक हो जाए। एक सर्वरलेस परिवेश में दो परिचालन बिंदु मायने रखते हैं, जहाँ कई अल्पजीवी फ़ंक्शन इंस्टेंस प्रत्येक एक कनेक्शन चाहते हैं: एक connection pooler वैकल्पिक नहीं है, क्योंकि एक डेटाबेस की एक कठोर कनेक्शन सीमा होती है जिसे सर्वरलेस वर्कर्स का एक बेड़ा अन्यथा समाप्त कर देगा; और row-level security डेटाबेस को स्वयं यह लागू करने देती है कि कौन कौन-सी पंक्तियाँ देख सकता है, एक ऐसा समर्थन जो एप्लिकेशन द्वारा हर क्वेरी सही पाने पर निर्भर नहीं करता। हम जो नियम रखते हैं वह सरल है और कहने योग्य है: एजेंट एक माइग्रेशन प्रस्तावित कर सकता है, पर एक माइग्रेशन वह एक प्रकार का बदलाव है जिसे कोई मनुष्य हमेशा पूरे ध्यान से पढ़ता है, क्योंकि यह वह एक प्रकार है जिसे शृंखला पूरी तरह अनडू नहीं कर सकती।
10. मानवीय गेट और यह कैसे विफल होता है
इस शृंखला में हर स्वचालित गेट इसलिए मौजूद है कि मानवीय गेट को सस्ता बनाए, उसे हटाए नहीं। pull request पर समीक्षक वह एक काम करता है जिसे कोई गेट स्वचालित नहीं करता: यह निर्णय करना कि क्या बदलाव वही है जो व्यवसाय वास्तव में चाहता था और क्या उसे उजागर करना सुरक्षित है, वे प्रश्न जिन्हें टाइप, परीक्षण और प्रीव्यू सूचित करते हैं पर उत्तर नहीं देते। शृंखला का पूरा प्रयोजन उस समीक्षक को एक छोटा, चलता हुआ, पूर्व-जाँचा बदलाव सौंपना है ताकि निर्णय त्वरित और सुआधारित हो। पर गेट के अपने विशिष्ट विफलता-प्रकार हैं, और उन्हें नाम देना शृंखला का अच्छा उपयोग करने का हिस्सा है।
पहला है रबर-स्टैम्पिंग। जब एजेंट प्रायः सही होता है, तब समीक्षक जल्दी स्वीकृत करना सीख लेता है, और समीक्षा एक ऐसी औपचारिकता में ह्रासित हो जाती है जो कुछ नहीं पकड़ती। बचाव यह है कि बदलावों को छोटा रखा जाए, ताकि उन्हें ठीक से पढ़ना सस्ता बना रहे, और प्रीव्यू को वैकल्पिक नहीं, अनिवार्य माना जाए: एक समीक्षा जिसने चलते हुए बदलाव में से क्लिक करके नहीं देखा वह समीक्षा नहीं है। दूसरा है अति-विश्वास, यानी यह मान्यता कि चूँकि कोड टाइप चेकर और परीक्षण पार कर गया इसलिए वह सही होगा; वे गेट आकृतियाँ और व्यवहार पकड़ते हैं पर अभिप्राय नहीं, और अभिप्राय पर मनुष्य ही एकमात्र गेट है। तीसरा है पैमाना थकान: एक एजेंट उससे अधिक pull request खोल सकता है जितनी एक टीम गंभीरता से समीक्षित कर सके, और आधे-समीक्षित बदलावों का एक बैकलॉग सत्यापन-बद्ध व्यवस्था का फिर से ज़ोर पकड़ना है। उत्तर तेज़ी से समीक्षा करना नहीं बल्कि अधिक सविचार ढंग से उत्पन्न करना है, यानी एजेंट को केवल वही उत्पन्न करने देना जिसे टीम वास्तव में सत्यापित कर सके, क्योंकि अनसत्यापित बदलाव अपने आयतन चाहे जो हो, एक देयता है।
11. लागतें और समझौते
शृंखला चुनावों का एक समुच्चय है, और ईमानदारी के लिए यह बताना आवश्यक है कि उनकी क़ीमत क्या है। सबसे स्पष्ट है जुड़ाव: Next.js और Vercel एक ही कंपनी से आते हैं, और उन पर बनाना एक चिकना, एकीकृत पथ ख़रीदता है एक हद तक लॉक-इन की क़ीमत पर, एक ऐसे फ़्रेमवर्क से जो तेज़ी से बदलता है और कभी-कभी प्रमुख संस्करणों के बीच संगतता तोड़ता है, और एक ऐसे होस्टिंग प्लेटफ़ॉर्म से जिसकी क़ीमत और मूलतत्त्व आप अपनाते हैं, दोनों से। हम इस समझौते को गति और प्रीव्यू लूप की गुणवत्ता के लिए सार्थक मानते हैं, पर यह एक वास्तविक निर्भरता है, और एक टीम को अपने डोमेन तर्क और अपने डेटा को पोर्टेबल रखना चाहिए ताकि फ़्रेमवर्क और होस्ट उत्पाद के बजाय प्रतिस्थापनीय अवसंरचना बने रहें। दूसरी लागत है वह अनुशासन जिसकी गेट माँग करता है: शृंखला उतनी ही सुरक्षित है जितनी वह समीक्षा जिसमें वह परिणत होती है, और जो टीम मानवीय गेट को रबर-स्टैम्पिंग तक क्षीण होने देती है उसके पास आत्मविश्वासी ग़लतियाँ भेजने का एक तेज़ तरीक़ा है, जो सुविचारित ग़लतियाँ भेजने के एक धीमे तरीक़े से बुरा है। तीसरी है एजेंट की पहुँच: एक उपकरण जो रिपॉज़िटरी संपादित कर सकता है और डिप्लॉयमेंट चला सकता है एक सशक्त कर्ता है, और उसे एक की तरह परिधिबद्ध किया जाना चाहिए, ब्रांच संरक्षण के साथ, न्यूनतम-विशेषाधिकार क्रेडेंशियल के साथ, रहस्यों को रिपॉज़िटरी से बाहर और एजेंट की पहुँच से बाहर रखते हुए, और अनुमति तथा अवसंरचना परिवर्तनों को विशेष सावधानी से समीक्षित करते हुए। चौथी है डेटा की अप्रतिवर्तनीयता, जिस पर ऊपर विचार किया गया: वह एक जगह जहाँ शृंखला के सुरक्षा जाल में एक छेद है, और वह जगह जहाँ सबसे अधिक मानवीय ध्यान खर्च करना है। इनमें से कोई भी शृंखला को न अपनाने का कारण नहीं है; प्रत्येक इसे सविचार ढंग से अपनाने का कारण है।
12. हम Nashua 360 प्लेटफ़ॉर्म को इस पर कैसे चलाते हैं
इस शोध-पत्र की शृंखला कोई प्रस्ताव नहीं जिसे हमने सैद्धांतिक रूप से गढ़ा हो; यह वही है जिस पर हम अपना उत्पाद बनाते और चलाते हैं। Nashua 360 Enterprise Platform एक Next.js एप्लिकेशन है, जो Vercel पर डिप्लॉय किया गया है, जिसके पीछे Postgres है, जिसका स्रोत GitHub पर है, और इसे एजेंट के रूप में Claude Code के साथ विकसित किया जाता है, मोबाइल ऐप से भी जब कोई बदलाव डेस्क से दूर शुरू या स्वीकृत करना बेहतर हो। एक चेक-इन की गई परंपराओं की फ़ाइल एजेंट को घर के नियम बताती है; प्लेटफ़ॉर्म में हर बदलाव एक ब्रांच और एक pull request है; हर pull request को उसकी टाइप जाँच, उसका सतत-एकीकरण रन, और स्टैक की एक पृथक प्रति पर उसका प्रीव्यू डिप्लॉयमेंट मिलता है; किसी मनुष्य के diff पढ़े और प्रीव्यू में से क्लिक करके देखे बिना कुछ भी production ब्रांच तक नहीं पहुँचता; और माइग्रेशन वे बदलाव हैं जिन्हें हम सबसे कठोरता से पढ़ते हैं। हमने इस शृंखला को फ़ैशनेबल होने के लिए इकट्ठा नहीं किया। हमने इसे इसलिए इकट्ठा किया क्योंकि, एक बार जब हमने स्वीकार कर लिया कि एक एजेंट ने उत्पादन को सस्ता और सत्यापन को बाधा बना दिया है, हर कड़ी इस प्रश्न से निकली कि तेज़ी से और सुरक्षित रूप से कैसे सत्यापित करें, और क्योंकि वही तर्क जो इसे हमारे लिए सही बनाता है, यानी पारंपरिक उपकरण जिन्हें एजेंट अच्छी तरह संभालता है, लूपों और गेटों में लिपटे हुए जो उसकी ग़लतियाँ पकड़ते हैं, इसे आज वेब सॉफ़्टवेयर बनाने वाली अधिकांश टीमों के लिए सही बनाता है। कि यह एक गंभीर उत्पाद को एक ट्रेन में फ़ोन से आगे बढ़ाने भी देता है, वह कारण नहीं जिससे हमने इसे चुना, पर यह इस बात का एक उचित संकेत है कि काम का आकार कितना बदल चुका है।
13. आपत्तियाँ और उत्तर
यह तो बस एक एजेंट जोड़ी गई सतत सुपुर्दगी है। बड़े हिस्से में, जानबूझकर। जिन प्रथाओं पर शृंखला टिकी है, यानी संस्करण नियंत्रण, छोटे समीक्षित बदलाव, सतत एकीकरण, प्रीव्यू और रोलबैक के साथ स्वचालित डिप्लॉयमेंट, वे आधुनिक सॉफ़्टवेयर सुपुर्दगी का स्थापित अनुशासन हैं (Humble & Farley, 2010; Forsgren et al., 2018), और बात यही है: एजेंट उस अनुशासन का स्थान नहीं लेता, वह उस पर प्रीमियम बढ़ा देता है, क्योंकि वही अनुशासन वह सत्यापन जुटाता है जिसकी एजेंट की गति अब माँग करती है। योगदान कोई नई प्रथा नहीं बल्कि इस बात का तर्क है कि उत्पादन सस्ता हो जाने पर पुरानी प्रथाएँ कम नहीं, अधिक क्यों मायने रखती हैं।
एक बेहतर मॉडल इस टूलिंग को अनावश्यक बना देगा। वह नहीं बनाएगा, क्योंकि टूलिंग उस हिस्से को संबोधित करती है जिसे एक बेहतर मॉडल नहीं छूता। एक अधिक सक्षम एजेंट तेज़ी से उत्पन्न करता है और, एक सत्यापन-बद्ध संसार में, तेज़ी से उत्पन्न करना वह नहीं बढ़ाता जो वास्तव में भेजा जाता है; केवल तेज़ी से सत्यापित करना बढ़ाता है। बेहतर मॉडल किसी मनुष्य के जाँचने के लिए अधिक कोड भी, तेज़ी से उत्पन्न करता है, जो गेटों को कम नहीं, अधिक आवश्यक बनाता है। शृंखला सत्यापन पर एक दाँव है, और वह दाँव उत्पादन सुधरने पर बुरा नहीं, बेहतर होता जाता है।
आप एक ही वेंडर के स्टैक में लॉक हैं। आंशिक रूप से, और हमने ऐसा कहा। Next.js और Vercel का जुड़ाव एक वास्तविक लाभ के लिए स्वीकृत एक वास्तविक लागत है, यानी वह एकीकृत प्रीव्यू लूप जो पूरे तर्क के केंद्र में है। शमन यह है कि आवश्यक तर्क, यानी डोमेन कोड और डेटाबेस, को पोर्टेबल रखा जाए, और फ़्रेमवर्क तथा होस्ट को प्रतिस्थापनीय अवसंरचना की तरह माना जाए। एक भिन्न जोखिम-रुचि वाली टीम शृंखला के आकार को, यानी एजेंट, संस्करण नियंत्रण, पृथक प्रीव्यू, टाइप-युक्त फ़्रेमवर्क, समीक्षित डेटाबेस, अन्य घटकों पर रख सकती है।
14. सीमाएँ
यह व्यवसायी-उन्मुख सलाह है, और इसकी सीमाएँ बतायी जानी चाहिए। यह हमारे अपने उपयोग में आधारित एक सुविचारित अनुशंसा है, कोई नियंत्रित तुलना नहीं; हमने शृंखला को विकल्पों के विरुद्ध नहीं मापा। विशिष्ट उपकरण 2026 के अंत तक वर्तमान हैं, और यह एक तेज़ी से बदलता क्षेत्र है: तर्क, यानी कि सत्यापन बाधा है और शृंखला को लूपों और गेटों के रूप में पढ़ा जाना चाहिए, किसी भी विशेष उपकरण को पार जीने के लिए अभिप्रेत है, पर विशेष उपकरण बदलेंगे, और एक पाठक को तर्क को रखना चाहिए और टुकड़ों को फिर से परखना चाहिए। अनुशंसा उस प्रकार के सॉफ़्टवेयर तक परिधिबद्ध है जिसे हम बनाते हैं, यानी एक डेटाबेस के साथ वेब एप्लिकेशन, और भिन्न बाधाओं वाले डोमेनों तक कम सीधे जाती है, जैसे ऐसे सिस्टम जहाँ एक सत्यापन गेट की लागत स्वयं निषेधात्मक हो, या जहाँ किसी एजेंट ने उस स्टैक का इतना नहीं देखा कि उस पर भरोसा किया जा सके। और शृंखला की सुरक्षा एक मानवीय गेट पर टिकी है जिसे शृंखला सस्ता तो बनाती है पर स्वचालित नहीं बना सकती; जो टीम उस गेट को ईमानदार रखने को तैयार नहीं वह सुरक्षा के बिना गति की अपेक्षा करे।
15. निष्कर्ष
एक कोडिंग एजेंट सॉफ़्टवेयर लिखना तेज़ बना देता है, और ऐसा करने में कठिन हिस्से को खुले में ले आता है। उत्पादन, वह हिस्सा जो पहले दिन पर हावी रहता था, सस्ता हो जाता है; सत्यापन, यानी यह तय करना कि क्या बनाना है और यह सुनिश्चित करना कि परिणाम सही है, नहीं होता, और बाधा बन जाता है। उपकरणों के लिए सबक़ यह है कि एक एआई-सहायित व्यवस्था का मूल्य एजेंट में नहीं बल्कि उसके इर्द-गिर्द की उस शृंखला में है जो किसी टीम को उस गति से सत्यापित करने देती है जिस गति से एजेंट उत्पन्न करता है और उसकी ग़लतियाँ उपयोगकर्ताओं से पहले पकड़ लेती है। हम Nashua 360 प्लेटफ़ॉर्म को ऐसी ही एक शृंखला पर बनाते और चलाते हैं: लिखने के लिए Claude Code, जाँचों के साथ एक लूप में और एक फ़ोन से पहुँच में; हर बदलाव को एक संरक्षित ब्रांच के पीछे एक समीक्षित, प्रतिवर्तनीय diff बनाने के लिए GitHub; हर बदलाव को उसका अपना चलता हुआ प्रीव्यू और हर रिलीज़ को एक तात्क्षणिक रोलबैक देने के लिए Vercel; एक टाइप-युक्त, पारंपरिक भू-भाग के रूप में Next.js जिसके टाइप पहला गेट हैं; और टिकाऊ अवस्था के रूप में Postgres जिसे समीक्षित, प्रतिवर्तनीय माइग्रेशनों के ज़रिए बदला जाता है। प्रत्येक कड़ी एक लूप बंद करती है या एक गेट जोड़ती है, गेट स्वतंत्र हैं ताकि उनमें से किसी एक को पूर्ण होने की ज़रूरत न हो, और समग्र इस क्षण के लिए विशिष्ट एक कसौटी पर चुना गया है: कि एक एजेंट के लिए पारंपरिक उपकरण ही सक्षम उपकरण है। तेज़ी से लिखिए, और तेज़ी से सत्यापित कीजिए, और production तक ऐसा कुछ न पहुँचने दीजिए जिसे किसी व्यक्ति ने चलता हुआ न देखा हो। बस इतना ही है, और यह पर्याप्त है।
परिशिष्ट A. एक अपनाव जाँच-सूची
नीचे दी गई प्रथाएँ वही हैं जो शृंखला को मात्र तेज़ के बजाय सुरक्षित बनाती हैं। कोई भी नवीन नहीं है; मूल्य अनुशासन में है।
तालिका 2. एक अपनाव जाँच-सूची। प्रत्येक प्रथा किसी गेट को ईमानदार या किसी लूप को छोटा रखती है; दाहिना स्तंभ वह विफलता है जिसे वह रोकती है।
| प्रथा | यह किसे रोकती है |
|---|---|
| main ब्रांच को संरक्षित कीजिए; केवल अपेक्षित जाँचों वाले समीक्षित pull request के ज़रिए मर्ज कीजिए | बिना समीक्षा या अपरीक्षित बदलाव का production तक पहुँचना |
| एजेंट के लिए एक चेक-इन की गई परंपराओं की फ़ाइल रखिए | वही सुधार दोहराना; संदर्भ विचलन |
| बदलावों को छोटा रखिए | समीक्षा का रबर-स्टैम्पिंग में ह्रास होना |
| एजेंट से सौंपने से पहले टाइप और परीक्षण चलवाइए | किसी मनुष्य द्वारा मशीन का सत्यापन करना |
| समीक्षा में प्रीव्यू को अनिवार्य मानिए | ऐसे कोड को स्वीकृत करना जिसे किसी ने चलता हुआ न देखा |
| प्रीव्यू को पृथक डेटा दीजिए | किसी समीक्षा का production डेटा छूना |
| हर माइग्रेशन को पूरे ध्यान से पढ़िए; पहले expand फिर contract | वह एक बदलाव जिसे शृंखला अनडू नहीं कर सकती |
| रहस्यों को रिपॉज़िटरी और एजेंट की पहुँच से बाहर रखिए; न्यूनतम विशेषाधिकार | एक सशक्त कर्ता जिसके पास ऐसे क्रेडेंशियल हों जिनकी उसे ज़रूरत नहीं |
| केवल वही उत्पन्न कीजिए जिसे आप सत्यापित कर सकें | अनसत्यापित, देय बदलाव का एक बैकलॉग |
संदर्भ
Ambler, S. W., & Sadalage, P. J. (2006). Refactoring databases: Evolutionary database design. Addison-Wesley. ISBN 978-0-321-29353-5.
Bacchelli, A., & Bird, C. (2013). Expectations, outcomes, and challenges of modern code review. In Proceedings of the 35th International Conference on Software Engineering (ICSE) (pp. 712–721). IEEE. https://doi.org/10.1109/ICSE.2013.6606617
Beck, K. (2000). Extreme programming explained: Embrace change. Addison-Wesley. ISBN 978-0-201-61641-5.
Brooks, F. P. (1987). No silver bullet: Essence and accidents of software engineering. Computer, 20(4), 10–19. https://doi.org/10.1109/MC.1987.1663532
Chen, M., Tworek, J., Jun, H., et al. (2021). Evaluating large language models trained on code. arXiv preprint arXiv:2107.03374. https://arxiv.org/abs/2107.03374
Anthropic (2026). Claude Code documentation. https://code.claude.com/docs
Forsgren, N., Humble, J., & Kim, G. (2018). Accelerate: The science of lean software and DevOps: Building and scaling high performing technology organizations. IT Revolution Press. ISBN 978-1-942788-33-1.
Fowler, M. (2006). Continuous integration. martinfowler.com. https://martinfowler.com/articles/continuousIntegration.html
GitHub (2026). GitHub documentation. https://docs.github.com
Humble, J., & Farley, D. (2010). Continuous delivery: Reliable software releases through build, test, and deployment automation. Addison-Wesley. ISBN 978-0-321-60191-9.
Vercel (2026). Next.js documentation. https://nextjs.org/docs
Peng, S., Kalliamvakou, E., Cihon, P., & Demirer, M. (2023). The impact of AI on developer productivity: Evidence from GitHub Copilot. arXiv preprint arXiv:2302.06590. https://arxiv.org/abs/2302.06590
PostgreSQL Global Development Group (2026). PostgreSQL documentation. https://www.postgresql.org/docs/
Reason, J. (2000). Human error: Models and management. BMJ, 320(7237), 768–770. https://doi.org/10.1136/bmj.320.7237.768
Sadowski, C., Söderberg, E., Church, L., Sipko, M., & Bacchelli, A. (2018). Modern code review: A case study at Google. In Proceedings of the 40th International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP) (pp. 181–190). ACM. https://doi.org/10.1145/3183519.3183525
Vercel (2026). Vercel documentation. https://vercel.com/docs
