परिवर्तन पर संपादन और पुनरावृत्ति (Editing & Iterating on a Change)
परिवर्तन में हर कलाकृति (artifact) एक ऐसी ही मार्कडाउन फ़ाइल है जिसे आप किसी भी समय संपादित कर सकते हैं। कोई लॉक किया गया "योजना चरण" नहीं होता, कोई अनुमोदन गेट (approval gate) नहीं होता, और प्रवेश करने के लिए कोई विशेष संपादन मोड (edit mode) नहीं होता। क्या आपने निर्माण शुरू कर दिया है और फिर भी प्रस्तावना बदलना चाहते हैं? proposal.md खोलें और इसे बदल दें। क्या आपको कार्यान्वयन (implementation) के बीच में एहसास हुआ कि डिज़ाइन गलत है? design.md ठीक करें और आगे बढ़ें। यही पूरा उत्तर है, और यह जानबूझकर किया गया है।
यह पृष्ठ उस क्षण के लिए है जब आप सोचते हैं "रुको, क्या मैं वापस जाकर इसे बदल सकता हूँ?" हाँ। यहाँ बताया गया है कि कैसे, हर सामान्य मामले के लिए।
किसी भी चीज़ को संपादित करने के दो तरीके
आपके पास हमेशा दोनों विकल्प होते हैं:
सीधे फ़ाइल को संपादित करें। कलाकृतियाँ (
Artifacts)openspec/changes/<name>/में सादी मार्कडाउन होती हैं। अपने एडिटर मेंproposal.md,design.md,tasks.md, याspecs/के तहत एक डेल्टा स्पेसिफिकेशन (delta spec) खोलें और इसे बदल दें। इसके लिए कुछ और आवश्यक नहीं है।अपने AI से इसे संशोधित करने के लिए कहें। चैट में, बस वह बताएं जो आप चाहते हैं: "कचरा संग्रहण (caching) वाले विचार को हटाने और रेट-लिमिट सेक्शन जोड़ने के लिए प्रस्तावना को अपडेट करें," या "डिज़ाइन को पोलिंग के बजाय एक क्यू (queue) का उपयोग करना चाहिए।" AI आपके लिए कलाकृति को संपादित करता है, परिवर्तन के बाकी हिस्सों को संदर्भ के रूप में उपयोग करता है।
जो भी उस क्षण के अनुकूल हो उसे उपयोग करें। छोटे शब्दों में सुधार? फ़ाइल संपादित करें। मौलिक पुनर्कल्पना (substantive rethink)? AI को पूरे संदर्भ के साथ संशोधित करने दें।
"मैंने शुरू कर दिया है तो प्रस्तावना (या स्पेसिफिकेशन) को कैसे अपडेट करूं?"
बस इसे अपडेट करें। वही परिवर्तन, परिष्कृत रूप में।
यदि आप विस्तारित कमांड्स (expanded commands) का उपयोग कर रहे हैं, तो स्वाभाविक प्रवाह यह है: कलाकृति को संपादित करें, फिर नई स्थिति से आगे बढ़ने के लिए /opsx:continue चलाएँ, या अद्यतन योजना के विरुद्ध कार्यान्वयन जारी रखने के लिए /opsx:apply चलाएँ। यदि आप डिफ़ॉल्ट core कमांड्स पर हैं, तो कलाकृति को संपादित करें और /opsx:apply चलाएँ; यह वर्तमान फ़ाइलों को पढ़ता है, इसलिए यह उस चीज़ के खिलाफ निर्माण करता है जो अब कलाकृतियाँ कहती हैं।
मानसिक मॉडल (Mental model): कलाकृतियाँ एक हस्ताक्षरित अनुबंध नहीं, बल्कि जीवित योजना हैं। AI हमेशा उनकी वर्तमान सामग्री से काम करता है, इसलिए उन्हें संपादित करना कार्य को निर्देशित करता है।
text
आप: मैं इस परिवर्तन में दृष्टिकोण बदलना चाहता हूँ।
आप: [design.md संपादित करें, या AI को बताएं:]
सिंक्रोनस कॉल के बजाय बैकग्राउंड जॉब का उपयोग करने के लिए design.md अपडेट करें।
AI: design.md अपडेट हो गया है। कार्य सूची अभी भी फिट बैठती है; क्या मैं लागू करना जारी रखूँ?
आप: /opsx:applyयह एक बहुत ही सामान्य प्रश्न का उत्तर देता है: कोई अलग "प्रस्तावना अपडेट" कमांड नहीं है क्योंकि इसकी आवश्यकता नहीं है। फ़ाइल सत्य का स्रोत (source of truth) है, और इसे संपादित करना (हाथ से या AI के माध्यम से) अपडेट है।
"कार्यान्वयन के बाद समीक्षा करने के लिए मैं कैसे वापस जाऊं?"
आपको "वापस जाने" की ज़रूरत नहीं है, क्योंकि आप कभी गए ही नहीं थे। कार्यप्रवाह (workflow) तरल है: समीक्षा करें, संपादित करें और कार्यान्वयन कोई क्रमिक चरण नहीं हैं जिनमें आप फँसे हुए हैं।
ठोस रूप से, कुछ /opsx:apply कार्य के बाद:
- क्या योजना की फिर से जांच करना चाहते हैं? कलाकृतियाँ खोलें और उन्हें पढ़ें, या एक समेकित दृश्य (consolidated view) के लिए अपने टर्मिनल में
openspec show <change>चलाएँ। - कुछ बदलने के लिए मिला? कलाकृति को संपादित करें (या AI से करने के लिए कहें), फिर जारी रखें।
- क्या कोड योजना से मेल खाता है इसकी संरचित जाँच चाहते हैं?
/opsx:verifyचलाएँ (विस्तारित कमांड)। यह किसी भी चीज़ को ब्लॉक किए बिना पूर्णता, शुद्धता और सुसंगति की रिपोर्ट करता है। Workflows: Verify देखें।
वापस लौटने के लिए कोई "समीक्षा चरण" नहीं है, क्योंकि समीक्षा कुछ ऐसा है जिसे आप किसी भी समय कर सकते हैं, जिसमें कार्यान्वयन के बाद भी शामिल है।
"मैंने कोड को हाथ से संपादित किया है। मैं इसे OpenSpec के साथ कैसे सामंजस्य स्थापित (reconcile) करूं?"
यह लगातार होता रहता है और यह ठीक है। आपने अपने एडिटर में कुछ ट्विक किया है, और अब कोड और कलाकृतियाँ असहमत हैं। उन्हें उस दिशा में वापस सिंक करें जो सही है:
- कोड अब सही है, स्पेसिफिकेशन पुराना हो गया है। डेल्टा स्पेसिफिकेशन (और यदि प्रासंगिक हों तो कार्य) को उस व्यवहार का वर्णन करने के लिए अपडेट करें जिसे आपने वास्तव में शिप किया है। आर्काइव करने से पहले स्पेसिफिकेशन वास्तविकता से मेल खाना चाहिए, क्योंकि आर्काइविंग स्पेसिफिकेशन को आपके सत्य के स्रोत में मिला देती है।
- स्पेसिफिकेशन सही है, कोड भटक गया है (drifted)। तब तक निर्माण या सुधार करते रहें जब तक कि कोड स्पेसिफिकेशन से मेल न खा जाए।
विसंगतियों (mismatches) को सामने लाने का एक तेज़ तरीका /opsx:verify है: यह आपके कलाकृतियों और आपके कोड को पढ़ता है और बताता है कि वे कहाँ विचलित होते हैं। इसके आउटपुट को सामंजस्य स्थापित करने के लिए एक कार्य सूची के रूप में मानें, फिर जब वे सहमत हों तो आर्काइव करें।
सिद्धांत: आर्काइव समय पर, आपके स्पेसिफिकेशन रिकॉर्ड का सत्य बन जाते हैं। इसलिए, आर्काइव करने से पहले, कोड क्या करता है उसके बारे में स्पेसिफिकेशन्स को ईमानदार बनाएं। मैनुअल संपादन स्वागत योग्य हैं; बस उन्हें चुपचाप स्पेसि को असंगत (desync) मत होने दें।
एक ऐसे प्रस्तावना को परिष्कृत करना जिससे आप संतुष्ट नहीं हैं
यदि कोई उत्पन्न प्रस्तावना अपेक्षित स्तर पर नहीं है, तो आपके पास तीन अच्छे विकल्प हैं:
- स्थान पर पुनरावृत्ति करें (Iterate in place)। AI को बताएं कि क्या गलत है ("दायरा बहुत व्यापक है, एडमिन सुविधाओं को हटा दें") और इसे संशोधित करने दें। सबसे सस्ता और आमतौर पर सही तरीका।
- पहले अन्वेषण करें, फिर पुनः प्रस्तावना दें। यदि समस्या यह है कि विचार स्वयं स्पष्ट नहीं है, तो
/opsx:exploreपर वापस आएं, इस पर विचार करें, और इससे एक अधिक तीक्ष्ण प्रस्तावना निकलनी चाहिए। Explore First देखें। - शुरुआत से शुरू करें। यदि इरादा मौलिक रूप से बदल गया है, तो एक नई परिवर्तन पुरानी को ठीक करने से अधिक स्पष्ट हो सकती है।
उस अंतिम कदम का अपना निर्णय मार्गदर्शिका है, आगे।
कब अपडेट करना है बनाम नया परिवर्तन शुरू करना है
संक्षिप्त संस्करण: जब यह वही कार्य परिष्कृत (refined) किया गया हो तो अपडेट करें; जब इरादा मौलिक रूप से बदल गया हो या दायरा विभिन्न कार्यों में फट गया हो तो नया शुरू करें।
- वही लक्ष्य, बेहतर दृष्टिकोण? अपडेट करें।
- दायरे को सीमित करना (पहले MVP शिप करें, बाद में और)? अपडेट करें, फिर आर्काइव करें, फिर दूसरे चरण के लिए एक नया परिवर्तन।
- समस्या स्वयं बदल गई है ("डार्क मोड जोड़ें" से "एक पूर्ण थी밍िंग सिस्टम बनाना")? नया परिवर्तन।
Workflows: When to Update vs Start Fresh में एक संपूर्ण फ़्लोचार्ट और कार्यशील उदाहरण हैं और OPSX: When to Update vs. Start Fresh में गहन उपचार है।
कार्यों (Tasks) पर एक टिप्पणी
tasks.md एक जीवित चेकलिस्ट है, न कि एक जमी हुई योजना। जैसे ही आप कार्यान्वयन करते हैं, आप उन कार्यों को जोड़ सकते हैं जिन्हें आपने खोजा है, उन कार्यों को हटा सकते हैं जो अनावश्यक साबित हुए, या उन्हें पुनर्व्यवस्थित कर सकते हैं। AI /opsx:apply के दौरान उन्हें पूरा होने पर टिक करता है, और यदि आप बाद में वापस आते हैं तो यह पहले से अनचेक्ड कार्य से फिर से शुरू होता है। उड़ान के बीच में सूची को संपादित करना अपेक्षित है।
आगे कहाँ जाना है
- Workflows - पैटर्न, साथ ही अपडेट बनाम नया निर्णय मार्गदर्शिका
- Explore First - वह जगह जहाँ विचार को पुनर्कल्पना करने की आवश्यकता होने पर वापस आएं
- Commands -
/opsx:continue,/opsx:apply, और/opsx:verifyका विस्तार से विवरण - Concepts: Artifacts - प्रत्येक कलाकृति किस लिए है