Opslagmodel
Mantis gebruikt drie opslaglagen:- Provider-image - beheerd door Crabbox, opgeslagen in het account van de cloudprovider. Bevat machinecapaciteiten (Chrome/Chromium, ffmpeg, scrot, Node/corepack/pnpm, native buildtools) en lege cachedirectories.
- Status van warme lease - beheerd door de huidige operatorsessie. Kan een
aangemeld browserprofiel,
/var/cache/crabbox/pnpmen een voorbereide broncode-checkout bevatten zolang de lease actief is. - Mantis-artefacten - beheerd door de OpenClaw-run. Bevinden zich onder
.artifacts/qa-e2e/mantis/...; GitHub Actions uploadt ze en de Mantis GitHub App plaatst inline bewijs als commentaar bij de PR.
node_modules of dist/ op in een provider-image.
GitHub-dispatch
Voer de workflow uit vanuitmain:
candidate_ref is beperkt omdat de workflow live-inloggegevens gebruikt: deze
moet verwijzen naar de huidige afstamming van main, een releasetag of de head van een open PR in
openclaw/openclaw.
De workflow produceert:
- geüpload artefact
mantis-slack-desktop-smoke-<run-id>-<attempt> - inline PR-commentaar van de Mantis GitHub App
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- externe logboeken:
slack-desktop-command.log,openclaw-gateway.log,chrome.log,ffmpeg.log
<!-- mantis-slack-desktop-smoke -->.
Lokale CLI
Koude broncodeverificatie:--hydrate-mode prehydrated alleen wanneer de hergebruikte externe werkruimte al
node_modules en een gebouwde dist/ bevat; anders stopt Mantis uit voorzorg.
Toon de native Slack-goedkeuringsinterface aan:
--approval-checkpoints sluit --gateway-setup wederzijds uit. Hiermee worden
de optionele scenario’s slack-approval-exec-native en slack-approval-plugin-native
uitgevoerd, tenzij je een expliciet goedkeuringscontrolepunt --scenario doorgeeft; andere
Slack-scenario’s worden geweigerd voordat de VM wordt gestart. De Slack-QA-runner schrijft
elk JSON-bestand met controlepunten op basis van het echte Slack API-bericht dat deze heeft waargenomen, waarna
de externe watcher dat bericht rendert naar
approval-checkpoints/<scenario>-pending.png en
approval-checkpoints/<scenario>-resolved.png. De run mislukt als een
JSON-bestand met controlepunten, berichtbewijs, bevestigings-JSON of gerenderde schermafbeelding ontbreekt
of leeg is.
Koude GitHub Actions-leases hebben geen Slack Web-cookies, waardoor hun browseropname
op het Slack-aanmeldscherm kan uitkomen. Vertrouw voor bewijs met goedkeuringscontrolepunten op de
gerenderde controlepuntafbeeldingen en Slack-QA-artefacten in plaats van op
slack-desktop-smoke.png. Gebruik alleen een behouden warme lease met een handmatig
aangemeld Slack Web-profiel wanneer de browserschermafbeelding zelf
Slack Web moet tonen.
Hydratiemodi
GitHub Actions bereidt de checkout van de kandidaat altijd voor vóór de VM-run. De
pnpm-store wordt gecachet op basis van het besturingssysteem, de Node-versie en het lockbestand. De
source-run van de VM
hergebruikt ook /var/cache/crabbox/pnpm wanneer dit aanwezig is.
Interpretatie van tijdmetingen
mantis-slack-desktop-smoke-report.md bevat tijdmetingen per fase:
crabbox.warmup- opstarten van de cloudprovider, gereedheid van desktop/browser, SSH.crabbox.inspect- opzoeken van leasemetagegevens.credentials.prepare- verkrijgen van een Convex-lease voor inloggegevens.crabbox.remote_run- synchronisatie, starten van de browser, installatie/build van OpenClaw of hydratievalidatie, opstarten van de Gateway, schermafbeelding en video-opname.artifacts.copy- rsync terug vanaf de VM.
crabbox.remote_run kan accepted tonen wanneer Crabbox een externe status anders dan nul
retourneert, maar Mantis metagegevens heeft gekopieerd die bewijzen dat de installatie van de OpenClaw-Gateway
is voltooid of dat de Slack-QA-opdracht zelf met succes is afgesloten. Behandel
accepted als geslaagd-met-uitleg, niet als een mislukt scenario.
Als een run traag is:
- Opwarming domineert: bouw vooraf of promoveer een betere provider-image voor Crabbox.
remote_rundomineert insource: gebruik een warme lease, verbeter het hergebruik van de pnpm-store of verplaats machinevereisten naar de provider-image.remote_rundomineert inprehydrated: de externe werkruimte was niet daadwerkelijk gereed, of het instellen van de Gateway/browser/Slack verloopt traag.- Het kopiëren van artefacten domineert: controleer de videogrootte en de inhoud van de artefactdirectory.
Bewijschecklist
Goed PR-commentaar toont:- scenario-id en kandidaat-SHA
- URL van de GitHub Actions-run en artefact-URL
- inline schermafbeelding van het goedkeuringscontrolepunt, of een Slack Web-schermafbeelding van een aangemelde warme lease
- inline geanimeerd voorbeeld wanneer beschikbaar
- links naar de volledige MP4 en ingekorte MP4
- status geslaagd/mislukt en het tijdsoverzicht van het rapport
Foutafhandeling
Als de workflow vóór de VM-run mislukt, controleer dan eerst de Actions-job. Typische oorzaken: niet-vertrouwdecandidate_ref, ontbrekende omgevingsgeheimen of een
mislukte installatie/build van de kandidaat.
Als de VM-run mislukt maar de schermafbeeldingen zijn teruggekopieerd, controleer dan:
crabbox vnc ...
uit het rapport en stop je daarna de lease wanneer je klaar bent:
--lease-id. Neem dat browserprofiel niet op in een provider-image.