Skip to main content

Command surface

Every QA flow runs under pnpm openclaw qa <subcommand>. Many have pnpm qa:* script aliases; both forms work.

Profile-backed qa run

Profile-backed qa run reads membership from taxonomy.yaml, then dispatches the resolved scenarios through qa suite. --surface and --category filter the selected profile instead of defining separate lanes. The resulting qa-evidence.json includes a profile scorecard summary with selected-category counts and missing coverage IDs; the individual evidence entries remain the source of truth for the tests, coverage roles, and results. Taxonomy feature coverage IDs are exact proof targets, not aliases: primary scenario coverage fulfills matching IDs, while secondary coverage stays advisory. Every coverage ID is exactly taxonomy-surface.feature, using the short surface ID from taxonomy.yaml. A scenario’s separate surface field is an execution/reporting label (for example, channel or runtime-tool); it does not define taxonomy ownership. An explicit profile coverage ID selects every eligible primary owner for that ID, deduplicated by scenario. Scenario file and taxonomy order do not affect membership or execution order. scenario.execution.channels is an OR eligibility list: a channel-specific runner may execute the scenario on any one listed channel. Profile-backed execution expands that same list across every channel supported by the selected driver, and the profile run passes only when every expanded channel execution passes. This applies uniformly to every taxonomy profile. Slim evidence omits per-entry execution and sets evidenceMode: "slim"; smoke-ci defaults to slim, and --evidence-mode full restores full entries:
Use smoke-ci for deterministic profile proof with mock model providers and Crabline local provider servers. Use release for Stable/LTS proof against live channels. Use all only for explicit full-taxonomy evidence runs; it selects every active maturity category and can be dispatched through the QA Profile Evidence GitHub Actions workflow with qa_profile=all. When a command also needs an OpenClaw root profile, put the root profile before the QA command: