Wilpy — staging E2E checklist (P0)
Manual acceptance on staging after deploy of
feat/wilpy-agent-p0.
Admin env: /one/docs/admin/wilpy-env · Design: Wilpy P0 spec
Канон:
wilix-site/content/one/docs/admin/wilpy-e2e-checklist.md(этот файл).
Prerequisites
- Chart deployed with
WILPY_DATABASE_URL,temporal.address,dashboard.wilpyWorker.enabled: true - Temporal namespace
wilpyexists on self-hosted frontend - Wilpy sandbox images built and pushed (
wilix/wilpy:clean,:project); HelmSF_IMAGE_WILPY_*points at registry -
SANDBOX_PROVIDER=daytona,DAYTONA_API_KEYset -
PLATFORM_ORGANIZATION_IDset (interim tenant mapping) - At least one Virtual MCP Server attached to a team the test user can use
- Settings → Platform → LLM: at least one enabled provider + model; mark one as default
- Test user can view default model (public or ACL); private model without ACL must not appear in Wilpy picker
1. Recipe + session create
- Dashboard → Recipes → New recipe,
agentType= Wilpy (first in list) - Set image kind
project(orcleanfor empty workspace) - Attach hosted MCP server(s) from VS; save recipe
- Launch session from recipe; sandbox reaches running (no relay phase failure in agents-api logs)
- Session row shows
agentType=wilpy;wilpy_session_idpopulated in DB - agents-api log:
wilpy session API mounted at /api/wilpy/* - wilpy-worker log:
Wilpy Temporal worker bootstrapped
2. Chat embed
- Open session page; Wilpy chat UI renders (not ACP transcript rail)
- Send a user message; assistant turn completes (SSE/stream)
- Long toolbox turn (>60s) stays connected (nginx
/api/agents-proxy/has 3600s + buffering off) - No errors in browser console for
/api/wilpy/*or chat-ui bundle
2b. LLM catalog + picker
- Wilpy chat model picker lists models from platform catalog (not hardcoded env provider)
- Private model without ACL is hidden from picker for test user
- Recipe with modelRef pin: new session uses pinned model on first turn (check worker resolve logs or response metadata)
- Change model in picker mid-session; next turn uses selected model
- User without ACL on pinned private model: turn fails gracefully (
llm_model_forbidden/ unavailable tool path — not worker crash)
3. Toolbox — read + bash
- Prompt that triggers read file in
/workspace(or recipe git checkout path) — tool succeeds - Prompt that runs shell (e.g.
git status,ls) — tool succeeds with stdout in tool result - Sandbox shell page (if enabled) opens PTY on wilpy sandbox
4. Stop sandbox → MCP only degrade
- With an active wilpy session, stop the sandbox (session rail or sandboxes list)
- Session stays active (not hard-failed); hosted MCP tools still callable
- Prompt requiring remote sandbox tool returns
toolbox_unavailable(or equivalent) in tool result only - Transcript / system prompt does not mention sandbox stopped or inject sandbox status
- MCP remint occurred (check agents-api logs: wilpy session patch after stop)
5. Wake sandbox
- Start/wake stopped sandbox from UI
- Wilpy session receives updated toolbox URL (patch in logs)
- Remote read/bash tools work again on next turn
6. ACP regression (opencode / cursor)
- Create opencode session on existing recipe — relay starts, chat works
- Create cursor session — relay + vendor CLI unchanged
- Permission / cancel / reattach flows unchanged for ACP agents
Sign-off
| Check | Tester | Date | Notes |
|---|---|---|---|
| 1–3 Create + chat + toolbox | |||
| 2b LLM catalog / ACL / picker | |||
| 4–5 Degrade + wake | |||
| 6 ACP regression |
Pass criteria: all sections checked; no wilpy-specific relay errors; ACP agents unaffected.