Live runtime verification (opt-in)¶
Canonical offline verification (default merge bar), fallback commands without just, and how just validate-artifacts relates to just ci: verification.md.
Default uv run just ci and uv run just test stay deterministic: no Docker daemons, no Ollama, no llama-server, no Playwright browsers. This document describes optional checks for real backends and the Playwright runner. Host commands assume uv (see AGENTS.md).
Modes¶
| Mode | Fixture / network | How to run |
|---|---|---|
| Offline / deterministic | ALWM_FIXTURE_MODE=1 forces mock providers in benchmarks; unit tests use fixtures |
uv run just ci, uv run just test |
| Live verification | Real HTTP to Ollama, OpenAI-compatible servers, or local Playwright | Env flags + commands below; always skips when services are missing |
Live provider benchmarks (Ollama + OpenAI-compatible)¶
- Start Ollama and/or an OpenAI-compatible HTTP server (e.g. llama.cpp
llama-serveron the host). - Set one or both:
ALWM_LIVE_BENCHMARK_OLLAMA=1— usesOLLAMA_HOST(defaulthttp://127.0.0.1:11434) andOLLAMA_MODEL(defaultgpt-oss:20b).ALWM_LIVE_BENCHMARK_LLAMACPP=1— usesOPENAI_BASE_URLandOPENAI_MODEL.- Run:
uv run just verify-live-providers
# or: uv run just test-integration
# or: uv run pytest tests/integration/test_live_benchmark_providers.py -v -m integration
Tests skip when the flag is unset, when probes fail, or when Ollama has no matching model.
Docker Compose (full benchmark cells)¶
| Recipe | Profile |
|---|---|
just ollama-gptoss-setup |
Pull gpt-oss:20b + alwm benchmark probe (see docs/workflows/benchmarking.md) |
just benchmark-ollama |
benchmark-ollama — healthy Ollama + benchmarks/v1/ollama.v1.yaml → out/benchmark-ollama |
just smoke-ollama-live |
Host minimal live Ollama benchmark (opt-in) |
just benchmark-llamacpp |
benchmark-llamacpp — host OpenAI-compatible URL → out/benchmark-llamacpp |
just benchmark-probe |
benchmark-probe — alwm benchmark probe only (reachability; no full benchmark) |
See benchmarking.md for details.
MCP stdio browser runner (local protocol, fixture data)¶
- Install dev extras so the MCP Python SDK is available:
uv pip install -e ".[dev]"
- From the repo root, point
ALWM_MCP_BROWSER_COMMANDat the FastMCP fixture server (shell-parsed argv):
export ALWM_MCP_BROWSER_COMMAND="python fixtures/mcp_servers/stdio_browser_evidence_server.py"
uv run alwm browser run-mcp --stdio --step alwm:checkout_flow
The server returns committed JSON from fixtures/browser_evidence/v1/ (see scenario table in docs/architecture/browser.md). This verifies the MCP client + validation path over stdio; it is not a remote or IDE-hosted integration.
- Coverage:
tests/test_mcp_stdio.pyruns the same stack in CI (subprocess + MCP protocol; still no browser binary).
Playwright browser runner¶
- Install optional deps on the host (not required for CI):
uv pip install -e ".[browser]"
uv run playwright install chromium
- Run integration tests against an offline
file://HTML fixture:
export ALWM_PLAYWRIGHT_SMOKE=1
uv run just verify-playwright-local
- Or run the same tests in Docker (builds the
browser-testimage with Chromium):
just browser-verify
CLI: alwm browser run-playwright --start-url … (requires [browser] installed).
Markers¶
| Pytest marker | Meaning |
|---|---|
integration |
Under tests/integration/; excluded from default just test |
live_ollama |
Ollama benchmark cell test |
live_llamacpp |
OpenAI-compatible benchmark cell test |
live_playwright |
Playwright smoke tests |