Get started

पथ 3 लाइव SQLite E2E हार्नेस

Path 3 लाइव SQLite E2E हार्नेस यह प्रमाणित करता है कि Gateway, SQLite को कैनोनिकल सत्र और ट्रांसक्रिप्ट स्टोर के रूप में उपयोग कर रहा है, जबकि लीगेसी JSONL फ़ाइलें माइग्रेशन इनपुट या आर्काइव सामग्री बनी रहती हैं। यह मेंटेनर प्रूफ़ हार्नेस है, कोई सामान्य उपयोगकर्ता डायग्नोस्टिक नहीं।

Gateway द्वारा माइग्रेशन के बाद का ट्रैफ़िक संसाधित कर लेने के बाद, लीगेसी JSONL समानता रनटाइम स्वास्थ्य का वैध संकेत नहीं रह जाती। स्वस्थ माइग्रेटेड Gateway में SQLite ट्रांसक्रिप्ट पंक्तियाँ लीगेसी JSONL गणनाओं से भिन्न हो सकती हैं, क्योंकि नए टर्न को केवल SQLite को आगे बढ़ाना चाहिए। इसलिए लाइव हार्नेस को प्रत्येक चरण पर Gateway व्यवहार, SQLite पंक्तियों की गतिविधि, लीगेसी फ़ाइलों की निष्क्रियता और लॉग स्वास्थ्य मापना आवश्यक है।

कमांड का स्वरूप

अभिप्रेत लाइव कमांड है:

bash
node scripts/path3-live-sqlite-e2e.mjs \  --url http://127.0.0.1:18789 \  --agent main \  --session-key agent:main:path3-live-e2e:<timestamp> \  --json

यह कमांड पहले से चल रहे Gateway से कनेक्ट होता है। यह माइग्रेशन को शुरू, बंद, इम्पोर्ट या फिर से नहीं चलाता, जब तक कि बाद में कोई स्पष्ट माइग्रेशन मोड न जोड़ा जाए। CI या पृथक-स्थानीय वेरिएंट test/helpers/openclaw-test-instance.ts का उपयोग कर सकता है, लेकिन लाइव प्रूफ़ पथ को वास्तविक ऑपरेटर Gateway और उसके वास्तविक प्रति-एजेंट SQLite डेटाबेस का निरीक्षण करना चाहिए।

पृथक बिल्ट-CLI प्रूफ़

बिल्ट-CLI प्रूफ़ रनर एक पृथक लीगेसी सत्र स्टोर को सीड करता है, पुनर्निर्मित Gateway शुरू करता है और प्रमाणित करता है कि रनटाइम रीड शुरू होने से पहले स्टार्टअप हॉट लीगेसी सत्रों को SQLite में इम्पोर्ट करता है। इसे पहले Gateway स्टार्ट से पहले openclaw doctor --fix नहीं चलाना चाहिए, क्योंकि वह उस अपग्रेड पथ के बजाय मैन्युअल माइग्रेशन पथ को प्रमाणित करेगा जो फ़्लिप के बाद पहली बूट पर उपयोगकर्ताओं को मिलता है।

स्टार्टअप इम्पोर्ट के बाद, पृथक प्रूफ़ डायग्नोस्टिक साक्ष्य के रूप में openclaw doctor --session-sqlite inspect और openclaw doctor --session-sqlite validate चला सकता है। वे doctor कमांड स्टार्टअप-अपग्रेड प्रूफ़ के माइग्रेशन ड्राइवर नहीं हैं। अलग doctor-इम्पोर्ट परिदृश्यों को लीगेसी ट्रांसक्रिप्ट फ़ाइलें और ट्रैजेक्टरी साइडकार सीड करने चाहिए तथा सत्यापित करना चाहिए कि doctor उन आर्टिफ़ैक्ट को आर्काइव करता है, जबकि SQLite कैनोनिकल बना रहता है।

प्रीफ़्लाइट

प्रीफ़्लाइट एक बेसलाइन एकत्र करता है और यदि Gateway उपयोग योग्य नहीं है तो प्रूफ़ टर्न भेजने से पहले विफल हो जाता है:

  • GET /health और Gateway डीप स्टेटस को चलता हुआ, पहुँच योग्य Gateway रिपोर्ट करना आवश्यक है।
  • CLI और Gateway संस्करणों का परीक्षण की जा रही ब्रांच से मेल खाना आवश्यक है।
  • हार्नेस सक्रिय Gateway फ़ाइल लॉग के लिए एक लॉग कर्सर रिकॉर्ड करता है।
  • हार्नेस sessions, session_entries, transcript_events, transcript_event_identities और session_routes के लिए प्रति-एजेंट SQLite तालिका गणनाएँ रिकॉर्ड करता है।
  • हार्नेस लीगेसी sessions.json, संदर्भित JSONL फ़ाइलों और संभावित प्रूफ़-सत्र JSONL पथों के लिए mtime, size और अस्तित्व रिकॉर्ड करता है।
  • lsof -p <gateway-pid> में SQLite DB/WAL/SHM हैंडल और कोई हॉट .jsonl या sessions.json हैंडल नहीं दिखना चाहिए।

लाइव मोड में openclaw doctor --session-sqlite validate केवल सूचनात्मक है। फ़्लिप के बाद के ट्रैफ़िक के पश्चात यह लीगेसी फ़ाइलों के सापेक्ष अपेक्षित विचलन रिपोर्ट कर सकता है। हार्नेस को doctor आउटपुट का उपयोग वर्गीकरण और माइग्रेशन इन्वेंट्री के लिए करना चाहिए, न कि रनटाइम पास/फ़ेल निर्णायक के रूप में।

एजेंट-संचालित परिदृश्य

लाइव परिदृश्य एक समर्पित प्रूफ़ सत्र कुंजी का उपयोग करता है और जहाँ भी संभव हो सार्वजनिक RPC पथों के माध्यम से Gateway को संचालित करता है। सामान्य स्थायित्व का अभ्यास करने के लिए एक एजेंट टर्न पर्याप्त होना चाहिए, लेकिन पूर्ण प्रूफ़ को उन 3.1b सीमों को कवर करना चाहिए जिनके लिए पहले अलग-अलग लाइव जाँच आवश्यक थीं:

  • सामान्य चैट टर्न: प्रूफ़ सत्र बनाएँ या पुनः उपयोग करें, वास्तविक एजेंट प्रॉम्प्ट भेजें, अंतिम असिस्टेंट परिणाम की प्रतीक्षा करें और chat.history या समतुल्य Gateway प्रोजेक्शन सत्यापित करें।
  • ट्रांसक्रिप्ट पहचान: सत्यापित करें कि वही मार्कर Gateway इतिहास और SQLite ट्रांसक्रिप्ट पंक्तियों में दिखाई देता है, जिसमें उपलब्ध होने पर स्थिर इवेंट पहचान पंक्तियाँ भी शामिल हैं।
  • सत्र मेटाडेटा एक्सेसर: प्रूफ़ सत्र और चयनित मौजूदा लाइव सत्रों को Gateway/सत्र एक्सेसर के माध्यम से पढ़ें और उनकी तुलना SQLite पंक्तियों से करें।
  • सत्र पैच प्रोजेक्शन: प्रूफ़ सत्र पर प्रतिवर्ती मॉडल/सत्र मेटाडेटा परिवर्तन लागू करें, फिर सत्यापित करें कि प्रोजेक्ट की गई पंक्ति और Gateway प्रतिक्रिया मेल खाते हैं।
  • Compaction चेकपॉइंट जीवनचक्र: केवल प्रूफ़ सत्र या हार्नेस द्वारा बनाए गए सिंथेटिक फ़िक्स्चर सत्र पर चेकपॉइंट सूचीबद्ध, ब्रांच और पुनर्स्थापित करें।
  • रीस्टार्ट रिकवरी: नियंत्रित प्रूफ़ सत्र या पृथक परीक्षण इंस्टेंस पर सुरक्षित रिकवरी मार्कर पथ चलाएँ; लाइव मोड यह चरण केवल तभी चला सकता है जब लक्षित सत्र सेट स्पष्ट और प्रतिवर्ती हो।
  • क्लीनअप जीवनचक्र: प्रूफ़ सत्र हटाएँ या रीसेट करें, फिर SQLite जीवनचक्र पंक्तियाँ और आर्काइव की गई ट्रांसक्रिप्ट स्थिति सत्यापित करें।

WhatsApp या वॉइस-कॉल इनग्रेस जैसे परिवहन-विशिष्ट सीम, जिनका लाइव ऑपरेटर Gateway पर सुरक्षित रूप से अभ्यास नहीं किया जा सकता, उन्हें नकली बाहरी परिवहन के बजाय उसी SQLite अनुबंध के विरुद्ध स्वामी-स्तरीय रनटाइम प्रोब का उपयोग करना चाहिए।

प्रति-चरण अभिकथन

प्रत्येक चरण पहले और बाद की स्थिति का स्नैपशॉट लेता है और एक संरचित अभिकथन रिकॉर्ड लिखता है:

  • SQLite पंक्ति गणनाएँ केवल अपेक्षित स्थानों पर आगे बढ़ती हैं।
  • रनटाइम इवेंट रिकॉर्ड करने वाले मार्कर-समर्थित प्रूफ़ सत्रों के लिए ट्रैजेक्टरी रनटाइम पंक्तियाँ आगे बढ़ती हैं।
  • प्रूफ़ सत्र पंक्ति में अपेक्षित session_id, स्थिति, टाइमस्टैम्प, मेटाडेटा और रूट पंक्तियाँ होती हैं।
  • Gateway इतिहास/सत्र प्रोजेक्शन SQLite ट्रांसक्रिप्ट टेल से मेल खाता है।
  • कोई प्रूफ़-सत्र JSONL फ़ाइल बनाई या संशोधित नहीं होती।
  • कोई प्रूफ़-सत्र .trajectory.jsonl, .trajectory-path.json या मार्कर-व्युत्पन्न trajectory/<session>.jsonl साइडकार नहीं बनाया जाता।
  • मौजूदा लीगेसी JSONL फ़ाइलें और sessions.json अपरिवर्तित रहते हैं, जब तक कि चरण स्पष्ट रूप से ऑफ़लाइन माइग्रेशन या आर्काइव कार्रवाई न हो।
  • Gateway प्रक्रिया .jsonl या sessions.json हैंडल नहीं खोलती।
  • पिछले कर्सर के बाद के लॉग में ERROR, FATAL, SQLITE_, no such column, सत्र-स्टोर अनुपलब्ध, रीस्टार्ट-रिकवरी विफलता या ट्रांसक्रिप्ट-रिकन्साइल चेतावनी नहीं होती, जब तक कि परिदृश्य उसे स्पष्ट रूप से अनुमति-सूची में न रखे।

लॉग स्कैन पास/फ़ेल अनुबंध का हिस्सा है। ऐसा Gateway जो स्वास्थ्य जाँचों का उत्तर देता है लेकिन SQLite स्कीमा त्रुटियाँ या बार-बार ट्रांसक्रिप्ट रिकन्साइल विफलताएँ उत्सर्जित करता है, Path 3 के लिए ग्रीन नहीं है।

साक्ष्य आर्टिफ़ैक्ट

हार्नेस को .artifacts/path3-live-e2e/<timestamp>/ के अंतर्गत साक्ष्य लिखना चाहिए और उसे git से बाहर रखना चाहिए:

  • summary.json: कमांड तर्क, Gateway संस्करण, परिणाम, विफल अभिकथन और आर्टिफ़ैक्ट पथ।
  • sqlite-before.json और sqlite-after.json: पंक्ति गणनाएँ और चयनित प्रूफ़ पंक्तियाँ।
  • legacy-files.json: लीगेसी फ़ाइल का अस्तित्व, mtime, आकार और क्या प्रत्येक फ़ाइल बदली।
  • gateway-log-scan.json: कर्सर सीमा, मेल खाने वाली लॉग पंक्तियाँ और अनुमति-सूची निर्णय।
  • events.jsonl: PR प्रूफ़ टिप्पणियों के लिए उपयुक्त क्रमबद्ध प्रति-चरण अवलोकन।

PR प्रूफ़ को पूर्ण ट्रांसक्रिप्ट या निजी संदेश सामग्री चिपकाने के बजाय इन आर्टिफ़ैक्ट का सारांश देना चाहिए।

सुरक्षा नियम

  • लाइव मोड को Gateway चलते समय लीगेसी JSONL कभी पुनः इम्पोर्ट नहीं करना चाहिए।
  • लाइव मोड को स्पष्ट रूप से चयनित, प्रतिवर्ती मरम्मत प्रोब को छोड़कर गैर-प्रूफ़ सत्रों को परिवर्तित नहीं करना चाहिए।
  • किसी भी विनाशकारी या व्यापक माइग्रेशन चरण के लिए प्रभावित SQLite DB और लीगेसी सत्र डायरेक्टरी का नया बैकअप आवश्यक है।
  • बैकअप को स्पर्श किए गए एजेंट DB/सत्र डायरेक्टरी तक सीमित रखना चाहिए और असीमित डिस्क वृद्धि से बचने के लिए एक प्रूफ़ रन के दौरान पुनः उपयोग करना चाहिए।
  • क्लीनअप चरण के बाद कोई प्रूफ़ सत्र, प्रूफ़ JSONL या संशोधित लीगेसी फ़ाइल शेष नहीं रहनी चाहिए, जब तक कि कॉलर --keep-artifacts पास न करे।

सफल परिणाम

सफल लाइव रन का अर्थ है कि Gateway ने वास्तविक एजेंट-संचालित सत्र प्रवाह स्वीकार किया, देखी गई संपूर्ण कैनोनिकल स्थिति SQLite में थी, लीगेसी रनटाइम फ़ाइलें निष्क्रिय रहीं और मापी गई अवधि में लॉग स्वास्थ्य साफ़ रहा। इसका अर्थ यह नहीं है कि लाइव ट्रैफ़िक के बाद लीगेसी JSONL समानता साफ़ बनी रहती है; SQLite के कैनोनिकल स्टोर बनते ही लाइव विचलन अपेक्षित है।

Was this useful?
On this page

On this page