You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Judges default to `openai/gpt-5.4,thinking=xhigh,fast` and `anthropic/claude-opus-4-6,thinking=high`.
199
199
- Report includes judge ranking, run stats, durations, and full transcripts; do not include raw judge replies. Duration is benchmark context, not a grading signal.
200
200
- Candidate and judge concurrency default to 16. Use `--concurrency <n>` and `--judge-concurrency <n>` to override when local gateways or provider limits need a gentler lane.
201
-
- Scenario source should stay markdown-driven under `qa/scenarios/`.
201
+
- Scenario source is YAML-only under `qa/scenarios/`: use `index.yaml` and
202
+
per-scenario `*.yaml` files with top-level `title`, `scenario`, and optional
203
+
`flow`. Never add fenced `qa-scenario` / `qa-flow` Markdown files.
202
204
- For isolated character/persona evals, write the persona into `SOUL.md` and blank `IDENTITY.md` in the scenario flow. Use `SOUL.md + IDENTITY.md` only when intentionally testing how the normal OpenClaw identity combines with the character.
203
205
- Keep prompts natural and task-shaped. The candidate model should receive character setup through `SOUL.md`, then normal user turns such as chat, workspace help, and small file tasks; do not ask "how would you react?" or tell the model it is in an eval.
204
206
- Prefer at least one real task, such as creating or editing a tiny workspace artifact, so the transcript captures character under normal tool use instead of pure roleplay.
@@ -234,7 +236,8 @@ pnpm openclaw qa manual \
234
236
235
237
## Repo facts
236
238
237
-
- Seed scenarios live in `qa/`.
239
+
- Seed scenarios live in `qa/scenarios/index.yaml` and
240
+
`qa/scenarios/<theme>/*.yaml`.
238
241
- Main live runner: `extensions/qa-lab/src/suite.ts`
Copy file name to clipboardExpand all lines: AGENTS.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -214,6 +214,7 @@ Skills own workflows; root owns hard policy and routing.
214
214
215
215
- Vitest. Colocated `*.test.ts`; e2e `*.e2e.test.ts`; example models `sonnet-4.6`, `gpt-5.5`; test GPT with 5.5 preferred, 5.4 ok; no GPT-4.x agent-smoke defaults.
216
216
- Prefer behavior tests over workflow/docs string greps. Put operator policy reminders in AGENTS/docs.
217
+
- QA scenario sources are YAML only: `qa/scenarios/index.yaml` and `qa/scenarios/<theme>/*.yaml`. Do not add fenced `qa-scenario`/`qa-flow` Markdown files under `qa/scenarios/`.
|`qa run`| Bundled QA self-check; writes a Markdown report. |
35
35
|`qa suite`| Run repo-backed scenarios against the QA gateway lane. Aliases: `pnpm openclaw qa suite --runner multipass` for a disposable Linux VM. |
36
-
|`qa coverage`| Print the markdown scenario-coverage inventory (`--json` for machine output). |
36
+
|`qa coverage`| Print the YAML scenario-coverage inventory (`--json` for machine output).|
37
37
|`qa parity-report`| Compare two `qa-suite-summary.json` files and write the agentic parity report, or use `--runtime-axis --token-efficiency` to write Codex-vs-OpenClaw runtime parity and token-efficiency reports from one runtime-pair summary. |
38
38
|`qa character-eval`| Run the character QA scenario across multiple live models with a judged report. See [Reporting](#reporting). |
39
39
|`qa manual`| Run a one-off prompt against the selected provider/model lane. |
@@ -769,25 +769,26 @@ Operational env vars and the Convex broker endpoint contract live in [Testing
769
769
770
770
Seed assets live in `qa/`:
771
771
772
-
-`qa/scenarios/index.md`
773
-
-`qa/scenarios/<theme>/*.md`
772
+
-`qa/scenarios/index.yaml`
773
+
-`qa/scenarios/<theme>/*.yaml`
774
774
775
775
These are intentionally in git so the QA plan is visible to both humans and the
776
776
agent.
777
777
778
-
`qa-lab` should stay a generic markdown runner. Each scenario markdown file is
778
+
`qa-lab` should stay a generic YAML scenario runner. Each scenario YAML file is
779
779
the source of truth for one test run and should define:
780
780
781
-
- scenario metadata
782
-
- optional category, capability, lane, and risk metadata
783
-
- docs and code refs
784
-
- optional plugin requirements
785
-
- optional gateway config patch
786
-
- an executable `qa-flow` block for flow scenarios, or `execution.kind`/`execution.path`
787
-
for Vitest and Playwright scenarios
788
-
789
-
The reusable runtime surface that backs `qa-flow` blocks is allowed to stay generic
790
-
and cross-cutting. For example, markdown scenarios can combine transport-side
781
+
- top-level `title`
782
+
-`scenario` metadata
783
+
- optional category, capability, lane, and risk metadata in `scenario`
784
+
- docs and code refs in `scenario`
785
+
- optional plugin requirements in `scenario`
786
+
- optional gateway config patch in `scenario`
787
+
- executable top-level `flow` for flow scenarios, or `scenario.execution.kind` /
788
+
`scenario.execution.path` for Vitest and Playwright scenarios
789
+
790
+
The reusable runtime surface that backs `flow` is allowed to stay generic
791
+
and cross-cutting. For example, YAML scenarios can combine transport-side
791
792
helpers with browser-side helpers that drive the embedded Control UI through the
792
793
Gateway `browser.request` seam without adding a special-case runner.
793
794
@@ -825,17 +826,17 @@ provider names.
825
826
826
827
## Transport adapters
827
828
828
-
`qa-lab` owns a generic transport seam for markdown QA scenarios. `qa-channel` is the first adapter on that seam, but the design target is wider: future real or synthetic channels should plug into the same suite runner instead of adding a transport-specific QA runner.
829
+
`qa-lab` owns a generic transport seam for YAML QA scenarios. `qa-channel` is the first adapter on that seam, but the design target is wider: future real or synthetic channels should plug into the same suite runner instead of adding a transport-specific QA runner.
- The transport adapter owns gateway config, readiness, inbound and outbound observation, transport actions, and normalized transport state.
834
-
-Markdown scenario files under `qa/scenarios/` define the test run; `qa-lab` provides the reusable runtime surface that executes them.
835
+
-YAML scenario files under `qa/scenarios/` define the test run; `qa-lab` provides the reusable runtime surface that executes them.
835
836
836
837
### Adding a channel
837
838
838
-
Adding a channel to the markdown QA system requires exactly two things:
839
+
Adding a channel to the YAML QA system requires exactly two things:
839
840
840
841
1. A transport adapter for the channel.
841
842
2. A scenario pack that exercises the channel contract.
@@ -869,7 +870,7 @@ The minimum adoption bar for a new channel:
869
870
2. Implement the transport runner on the shared `qa-lab` host seam.
870
871
3. Keep transport-specific mechanics inside the runner plugin or channel harness.
871
872
4. Mount the runner as `openclaw qa <runner>` instead of registering a competing root command. Runner plugins should declare `qaRunners` in `openclaw.plugin.json` and export a matching `qaRunnerCliRegistrations` array from `runtime-api.ts`. Keep `runtime-api.ts` light; lazy CLI and runner execution should stay behind separate entrypoints.
872
-
5. Author or adapt markdown scenarios under the themed `qa/scenarios/` directories.
873
+
5. Author or adapt YAML scenarios under the themed `qa/scenarios/` directories.
873
874
6. Use the generic scenario helpers for new scenarios.
874
875
7. Keep existing compatibility aliases working unless the repo is doing an intentional migration.
0 commit comments