feat(mantis): keep QA leases alive and stage fixture plugins (#127804)

* feat(mantis): keep leases alive and stage fixture plugins

* refactor(mantis): deduplicate lease keepalive guard

* fix(mantis): retry keepalive on unexpected broker errors

* fix(mantis): fence active proof on terminal lease loss
This commit is contained in:
Ayaan Zaidi
2026-08-22 14:09:28 +05:30
committed by GitHub
parent 36d50b2009
commit 10c774cf38
10 changed files with 708 additions and 40 deletions
@@ -8,7 +8,7 @@ continuous event recording, capture, and cleanup.
- No PR mutations, commits, pushes, labels, reviews, or merges.
- Do not read prepared worktrees. Pass their exact paths only to the lane helper.
- Write only under `MANTIS_OUTPUT_DIR`.
- Write only under `MANTIS_OUTPUT_DIR` and the fixture staging directory described below.
- Never invent a pass, hide an attempt, edit trusted facts/media, or use old chat history.
- A visible defect is a failure. An unproven comparison is `block`, not a pass.
@@ -48,6 +48,16 @@ mock OpenAI endpoint; the QA user is the gateway owner, so owner commands such a
`/send off` work without a patch.
Optional field: `mockResponseChunkDelayMs`.
For scenarios that need an agent-authored plugin, write a complete plugin package
under `MANTIS_FIXTURE_PLUGINS_DIR/baseline` and/or
`MANTIS_FIXTURE_PLUGINS_DIR/candidate` before `start`. The harness copies the
selected lane directory into that lane's isolated SUT; fixture code never runs on
the runner host. Add the fixture id through `configPatch.plugins.allow` while
retaining `telegram` and `openai`, then enable it through its entry or owning slot.
Do not set `plugins.load.paths`; the harness owns that path. Use the same fixture
package in both lane directories for a fair comparison unless different fixtures
are an explicit part of the scenario.
## Primitive CLI
Use `$OPENCLAW_TELEGRAM_MANTIS_LANE_CMD` with `--lane baseline|candidate`: