स्टोरेज मॉडल
Mantis तीन स्टोरेज परतों का उपयोग करता है:- प्रदाता इमेज - Crabbox के स्वामित्व में, क्लाउड प्रदाता खाते में संग्रहीत। इसमें मशीन क्षमताएँ (Chrome/Chromium, ffmpeg, scrot, Node/corepack/pnpm, नेटिव बिल्ड टूल) और खाली कैश डायरेक्टरी होती हैं।
- वार्म लीज़ स्थिति - वर्तमान ऑपरेटर सत्र के स्वामित्व में। लीज़ सक्रिय रहने तक इसमें
लॉग-इन किया हुआ ब्राउज़र प्रोफ़ाइल,
/var/cache/crabbox/pnpm, और तैयार स्रोत चेकआउट हो सकते हैं। - Mantis आर्टिफ़ैक्ट - OpenClaw रन के स्वामित्व में। ये
.artifacts/qa-e2e/mantis/...के अंतर्गत रहते हैं; GitHub Actions इन्हें अपलोड करता है और Mantis GitHub App PR पर इनलाइन साक्ष्य की टिप्पणी करता है।
node_modules, या dist/ को कभी भी प्रदाता इमेज में बेक न करें।
GitHub डिस्पैच
वर्कफ़्लो कोmain से चलाएँ:
candidate_ref प्रतिबंधित है क्योंकि वर्कफ़्लो लाइव क्रेडेंशियल का उपयोग करता है: इसे
वर्तमान main वंशावली, किसी रिलीज़ टैग, या
openclaw/openclaw में किसी खुले PR हेड पर रिज़ॉल्व होना आवश्यक है।
वर्कफ़्लो निम्नलिखित तैयार करता है:
- अपलोड किया गया आर्टिफ़ैक्ट
mantis-slack-desktop-smoke-<run-id>-<attempt> - Mantis GitHub App से इनलाइन PR टिप्पणी
slack-desktop-smoke.png,slack-desktop-smoke.mp4slack-desktop-smoke-preview.gif,slack-desktop-smoke-change.mp4mantis-slack-desktop-smoke-summary.json,mantis-slack-desktop-smoke-report.md- रिमोट लॉग:
slack-desktop-command.log,openclaw-gateway.log,chrome.log,ffmpeg.log
<!-- mantis-slack-desktop-smoke --> मार्कर के माध्यम से उसी स्थान पर अपडेट किया जाता है।
स्थानीय CLI
कोल्ड स्रोत प्रमाण:--hydrate-mode prehydrated का उपयोग केवल तभी करें जब पुनः उपयोग किए गए रिमोट कार्यस्थान में पहले से
node_modules और बिल्ड किया हुआ dist/ हो; अन्यथा Mantis विफलता-सुरक्षित रूप से रुक जाता है।
नेटिव Slack अनुमोदन UI को प्रमाणित करें:
--approval-checkpoints और --gateway-setup परस्पर अपवर्जी हैं। यह
ऑप्ट-इन slack-approval-exec-native और slack-approval-plugin-native
परिदृश्यों को चलाता है, जब तक कि आप स्पष्ट अनुमोदन-चेकपॉइंट --scenario न दें; अन्य
Slack परिदृश्यों को VM शुरू होने से पहले अस्वीकार कर दिया जाता है। Slack QA रनर
वास्तविक Slack API संदेश से प्रत्येक चेकपॉइंट JSON फ़ाइल लिखता है, फिर
रिमोट वॉचर उस संदेश को
approval-checkpoints/<scenario>-pending.png और
approval-checkpoints/<scenario>-resolved.png में रेंडर करता है। यदि कोई
चेकपॉइंट JSON, संदेश साक्ष्य, ack JSON, या रेंडर किया हुआ स्क्रीनशॉट अनुपस्थित
या खाली हो, तो रन विफल हो जाता है।
कोल्ड GitHub Actions लीज़ में Slack Web कुकी नहीं होतीं, इसलिए उनका ब्राउज़र कैप्चर
Slack साइन-इन स्क्रीन पर पहुँच सकता है। अनुमोदन-चेकपॉइंट प्रमाण के लिए,
slack-desktop-smoke.png के बजाय रेंडर की गई चेकपॉइंट इमेज और Slack QA आर्टिफ़ैक्ट
पर भरोसा करें। लॉग-इन किए हुए Slack Web प्रोफ़ाइल वाली रखी गई वार्म लीज़ का उपयोग
केवल तभी करें जब ब्राउज़र स्क्रीनशॉट में स्वयं Slack Web दिखना आवश्यक हो।
हाइड्रेट मोड
GitHub Actions हमेशा VM रन से पहले उम्मीदवार चेकआउट तैयार करता है। इसका
pnpm स्टोर OS, Node संस्करण और लॉकफ़ाइल के अनुसार कैश किया जाता है। उपलब्ध होने पर VM का
source रन
भी /var/cache/crabbox/pnpm का पुनः उपयोग करता है।
समय की व्याख्या
mantis-slack-desktop-smoke-report.md में चरणों के समय शामिल होते हैं:
crabbox.warmup- क्लाउड प्रदाता बूट, डेस्कटॉप/ब्राउज़र की तैयारी, SSH।crabbox.inspect- लीज़ मेटाडेटा लुकअप।credentials.prepare- Convex क्रेडेंशियल लीज़ अधिग्रहण।crabbox.remote_run- सिंक, ब्राउज़र लॉन्च, OpenClaw इंस्टॉल/बिल्ड या हाइड्रेट सत्यापन, gateway स्टार्टअप, स्क्रीनशॉट और वीडियो कैप्चर।artifacts.copy- VM से वापस rsync।
crabbox.remote_run में accepted दिख सकता है।
accepted को विफल परिदृश्य नहीं, बल्कि स्पष्टीकरण-सहित सफलता मानें।
यदि कोई रन धीमा है:
- वार्मअप प्रमुख है: बेहतर Crabbox प्रदाता इमेज को पहले से बेक या प्रमोट करें।
sourceमेंremote_runप्रमुख है: वार्म लीज़ का उपयोग करें, pnpm स्टोर पुनः उपयोग सुधारें, या मशीन की पूर्वापेक्षाएँ प्रदाता इमेज में ले जाएँ।prehydratedमेंremote_runप्रमुख है: रिमोट कार्यस्थान वास्तव में तैयार नहीं था, या gateway/ब्राउज़र/Slack सेटअप धीमा है।- आर्टिफ़ैक्ट कॉपी प्रमुख है: वीडियो का आकार और आर्टिफ़ैक्ट डायरेक्टरी की सामग्री जाँचें।
साक्ष्य चेकलिस्ट
एक अच्छी PR टिप्पणी में ये दिखते हैं:- परिदृश्य ID और उम्मीदवार SHA
- GitHub Actions रन URL और आर्टिफ़ैक्ट URL
- इनलाइन अनुमोदन-चेकपॉइंट स्क्रीनशॉट, या लॉग-इन की हुई वार्म लीज़ से Slack Web स्क्रीनशॉट
- उपलब्ध होने पर इनलाइन एनिमेटेड पूर्वावलोकन
- पूर्ण MP4 और ट्रिम किए गए MP4 लिंक
- सफलता/विफलता स्थिति और रिपोर्ट का समय सारांश
विफलता प्रबंधन
यदि वर्कफ़्लो VM रन से पहले विफल हो जाता है, तो पहले Actions जॉब की जाँच करें। सामान्य कारण: अविश्वसनीयcandidate_ref, अनुपस्थित एनवायरनमेंट सीक्रेट, या
उम्मीदवार इंस्टॉल/बिल्ड विफलता।
यदि VM रन विफल हो जाता है, लेकिन स्क्रीनशॉट वापस कॉपी किए गए थे, तो इनकी जाँच करें:
crabbox vnc ...
कमांड से VNC खोलें, फिर काम पूरा होने पर लीज़ रोकें:
--lease-id के साथ दोबारा चलाएँ। उस ब्राउज़र प्रोफ़ाइल को प्रदाता इमेज में बेक न करें।