ストレージモデル
Mantis は 3 つのストレージ層を使用します。- プロバイダーイメージ - 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 の head に
解決される必要があります。
ワークフローは以下を生成します。
- アップロードされたアーティファクト
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
コールドなソース証明:node_modules とビルド済みの
dist/ がすでにある場合にのみ --hydrate-mode prehydrated を使用してください。それ以外の場合、Mantis は安全側に倒して失敗します。
ネイティブの Slack 承認 UI を証明します。
--approval-checkpoints と --gateway-setup は同時に使用できません。明示的な承認チェックポイント
--scenario を渡さない限り、オプトインの slack-approval-exec-native と
slack-approval-plugin-native のシナリオを実行します。その他の Slack
シナリオは VM の起動前に拒否されます。Slack QA ランナーは観測した実際の Slack API
メッセージから各チェックポイントの JSON ファイルを書き込み、その後、リモートウォッチャーがそのメッセージを
approval-checkpoints/<scenario>-pending.png と
approval-checkpoints/<scenario>-resolved.png にレンダリングします。
チェックポイント JSON、メッセージの証拠、ack JSON、レンダリングされたスクリーンショットのいずれかが存在しないか空の場合、実行は失敗します。
コールドな GitHub Actions リースには Slack Web の Cookie がないため、ブラウザキャプチャが
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 で再実行してください。そのブラウザプロファイルをプロバイダーイメージに組み込まないでください。