Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .agents/skills/benchmark-report/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ An explicitly requested diagnostic report may be delivered separately from a cer

## Working contract

Repository reports default to Chinese-only output and checks. English generation (including translated illustrations) requires an explicit manual request. Bind generated languages in the report manifest; English navigation opens a not-generated notice when absent. Do not publish stale English pages. Run English-specific validation only for an explicitly generated English edition, retaining full parity checks when both editions exist.
Public report CLIs default to English where supported and expose `--language en|zh`. Preserve the selected language on rebuild. English builds retain the matching Chinese edition; keep measured material in its source language. Historical Chinese-only renderers must disclose that limit and reject unsupported requests. Bind generated languages and the selected entry in report metadata. English navigation opens a not-generated notice when absent; never publish stale English pages. Validate each generated edition and retain route, value and evidence-link parity checks when both exist.

1. Establish the decision being supported, the measured unit, cohort, versions, execution location, freshness policy, and intended deliverable. Inspect the actual dataset, runner, outputs, scorer, prior review evidence, and current report. Do not infer them from screenshots or prose.
2. Freeze a machine-readable evaluation contract before expensive calls. It must identify the exact cases and methods, run count, timeout, concurrency policy, input and output contract, scoring provenance, reference state, and publication target when one exists. For source-dependent tasks, fail closed: verify and freeze references immediately before calls, verify the same declared scope afterward, and certify the cohort only when both checks pass. Partial or uncertified cohorts remain diagnostic evidence and cannot enter a release.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ A diagnostic instance profile can bind `diagnostic_input.path` relative to the d

## Language generation

All tracks generate and validate Chinese by default. English requires an explicit manual trigger; do not automatically translate prose, generate English illustrations, render English routes or run English-specific checks. A manifest records which languages were generated. When English is absent, retain only a clear not-generated notice with a return link, and test that control. Remove stale English output and unused translated assets from the new bundle while preserving source translations. Parity and English localization checks apply when the English edition is explicitly generated; Chinese-only releases retain all Chinese evidence, semantics, links and visual gates.
Public CLIs default to English where the current renderer supports it and accept `--language en|zh`. Rebuilds preserve the saved choice. English builds retain a matching Chinese edition; language selection never translates measured evidence or changes scores. Historical Chinese-only reports must disclose their limit and reject an English request. Record generated editions and the primary entry in metadata. If English is absent, keep only its not-generated notice with a return link and remove stale English pages and unused assets. Validate each generated edition; bilingual reports require matching routes, values, section order and evidence links.

For the current trajectory report, `make trajectory-replay-report EVIDENCE=/absolute/path/results.json` builds Chinese only. Explicit `ENGLISH=1` (or the build script's `--include-english`) enables English. Report, visual and packaging checks use the generated manifest, so they do not regenerate an absent edition.
For the current trajectory report, `make trajectory-replay-report EVIDENCE=/absolute/path/results.json` defaults to English. Set `REPORT_LANGUAGE=zh` (or the build script's `--language zh`) for Chinese-only output. Report, visual and packaging checks use the generated manifest, so they do not regenerate an absent edition.

## Reader-facing structure

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
with:
version: "0.7.8"
- run: uv sync --frozen --python "${{ matrix.python }}" --extra test
- run: uv run --frozen --python "${{ matrix.python }}" --no-sync python -m pytest tests/test_portable_cli.py tests/test_cli_scope.py tests/test_web_fetch_quickstart.py -q
- run: uv run --frozen --python "${{ matrix.python }}" --no-sync python -m pytest tests/test_portable_cli.py tests/test_cli_scope.py tests/test_web_fetch_quickstart.py tests/test_public_report_language.py -q
test:
runs-on: ubuntu-latest
steps:
Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ These requirements apply to **all** report tracks; browser-specific rules below
- A reference, scoring or acceptance correction must fix the shared cause, not patch stored verdicts or one provider. Add paired executable controls to `evaluation/scoring-regressions.json` where both error directions are plausible, run them through the public `score_attempt` and task predicate, and bind the root cause plus regression IDs in every new reference/scoring revision receipt. A revision without this provenance fails before evidence is changed.
- A heterogeneous same-window latency cohort keeps every predeclared method-task call. Report the common-denominator all-call distribution separately from each method's conditional successful-call distribution; an all-method common-pass intersection is diagnostic only and must never drive post-outcome task selection or a ranking.
- Evaluation credentials come only from the repository `.env`. Artifact Site publishing is the sole user-scoped exception: read explicit `ARTIFACT_SITE_TOKEN`, then `~/.config/artifact-site/tokens/<target-host>`; the previous `ARTIFACT_HUB_TOKEN` and `~/.config/artifact-hub/` locations are read-only migration fallbacks. Never load `.env` for publishing. Save new authorizations per target host without overwriting another deployment's token. Keep `.env.example` current and publish only account requirements, official acquisition links and variable names.
- All report tracks default to Chinese-only generation and checks. English prose, illustrations, rendering and validation require an explicit manual request. When English is absent, its navigation control must open a not-generated notice with a return link; do not ship stale English pages or unused English-only assets. Preserve translation sources for manual use. Record generated languages in the report manifest. Run release/visual checks for those languages and the not-generated notice. When both editions are generated, their HTML route inventories, section order, tables, values, filters and evidence links must match one-to-one. Keep measured evidence unchanged.
- Public report CLIs default to English where the owning renderer supports it; expose `--language en|zh` and preserve the saved primary language on rebuild. English builds retain the matching Chinese edition. Chinese-only historical renderers must state their limitation and reject an English request rather than relabel untranslated pages. Never infer language from host locale or translate measured evidence. Record generated editions and the selected entry in report metadata. When English is absent, its navigation opens a not-generated notice with a return link; never ship stale English pages. Check the generated languages and notice, and require matching route inventories, section order, tables, values, filters and evidence links when both editions exist.
- Web, dynamic, popular-site and document text use shared `score_attempt` orchestration and one task-result predicate. Task-specific requirements live in case configuration, not provider- or track-specific scoring branches. Binary acceptance and text diagnostics remain separate; missing reference coverage is unavailable, not zero or perfect.
- Dynamic-content reference capture follows `harness/web_fetch/README.md`: retain paired initial HTTP bytes and independently rendered visible text, bound completion and the full declared scope. Distinguish embedded state from follow-up fetching; never require JavaScript as the only valid route.
- Popular-site stable text must be independently observed and task-relevant. Do not freeze volatile ranks, prices, member counts or current list membership. Title diagnostics join returned entities to independent names by detail URL and never substitute for body quality, recall, freshness or task acceptance.
Expand Down
13 changes: 7 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ PY := $(UV) run --frozen python
TEST_PY := $(UV) run --frozen --all-extras python
WEBMAINBENCH_SAMPLE ?= evaluation/public-webmainbench-200.json
WEBMAINBENCH_PROFILE ?= evaluation/current-report.json
REPORT_LANGUAGE ?=
DIAGNOSTIC_PROFILE ?= evaluation/live-webfetch/current-report.json

.PHONY: setup setup-test import-env runtime-check naming-check test test-python test-ui fixture-smoke ci report report-check popular-sites-report popular-sites-report-check wcxb-release-check resource-image public-benchmark-report public-benchmark-sample webmainbench-run webmainbench-score webmainbench-review webmainbench-assemble browser-use-review browser-use-report browser-use-report-check browser-use-visual-check browser-use-release-check trajectory-replay-report trajectory-replay-report-check trajectory-replay-visual-check trajectory-replay-release-check trajectory-replay-package trajectory-replay-publish webarena-catalog-report webarena-catalog-release-check public-webarena-report public-webarena-report-audit public-webarena-report-release
Expand All @@ -26,7 +27,7 @@ report-template: runtime-check

webfetch-diagnostic-report: runtime-check
@test -n "$(OUTPUT)"
$(PY) scripts/build_report.py --profile "$(DIAGNOSTIC_PROFILE)" $(if $(EVIDENCE),--evidence "$(EVIDENCE)") --output "$(OUTPUT)"
$(PY) scripts/build_report.py --profile "$(DIAGNOSTIC_PROFILE)" $(if $(REPORT_LANGUAGE),--language "$(REPORT_LANGUAGE)",) $(if $(EVIDENCE),--evidence "$(EVIDENCE)") --output "$(OUTPUT)"
$(PY) scripts/check_diagnostic_report.py "$(OUTPUT)" --profile "$(DIAGNOSTIC_PROFILE)"

naming-check: runtime-check
Expand Down Expand Up @@ -84,7 +85,7 @@ package-check: runtime-check

report: runtime-check
@test -n "$(EVIDENCE)" || (echo 'EVIDENCE=/absolute/path is required' >&2; exit 2)
$(PY) scripts/build_report.py --evidence "$(EVIDENCE)" --output reports/webfetch $(if $(filter 1,$(ENGLISH)),--include-english,)
$(PY) scripts/build_report.py --evidence "$(EVIDENCE)" --output reports/webfetch $(if $(REPORT_LANGUAGE),--language "$(REPORT_LANGUAGE)",) $(if $(filter 1,$(ENGLISH)),--include-english,)

report-check: runtime-check
$(PY) scripts/check_report.py reports/webfetch
Expand All @@ -93,7 +94,7 @@ report-check: runtime-check

popular-sites-report: runtime-check
@test -n "$(EVIDENCE)" || (echo 'EVIDENCE=/absolute/path is required' >&2; exit 2)
$(PY) scripts/build_report.py --profile evaluation/popular-sites/current-report.json --evidence "$(EVIDENCE)" --output reports/popular-sites $(if $(filter 1,$(ENGLISH)),--include-english,)
$(PY) scripts/build_report.py --profile evaluation/popular-sites/current-report.json --evidence "$(EVIDENCE)" --output reports/popular-sites $(if $(REPORT_LANGUAGE),--language "$(REPORT_LANGUAGE)",) $(if $(filter 1,$(ENGLISH)),--include-english,)

popular-sites-report-check: runtime-check
$(PY) scripts/check_report.py reports/popular-sites --profile evaluation/popular-sites/current-report.json
Expand All @@ -107,7 +108,7 @@ wcxb-release-check: runtime-check

browser-use-report: runtime-check
@test -n "$(EVIDENCE)" || (echo 'EVIDENCE="/absolute/path [/absolute/path...]" is required' >&2; exit 2)
$(PY) scripts/build_browser_use_report.py $(foreach path,$(EVIDENCE),--evidence "$(path)") --output reports/browser-use $(if $(filter 1,$(ENGLISH)),--include-english,)
$(PY) scripts/build_browser_use_report.py $(foreach path,$(EVIDENCE),--evidence "$(path)") --output reports/browser-use $(if $(REPORT_LANGUAGE),--language "$(REPORT_LANGUAGE)",) $(if $(filter 1,$(ENGLISH)),--include-english,)

browser-use-review: runtime-check
@test -n "$(EVIDENCE)" || (echo 'EVIDENCE=/absolute/path is required' >&2; exit 2)
Expand All @@ -126,7 +127,7 @@ browser-use-release-check: browser-use-report-check

trajectory-replay-report: runtime-check
@test -n "$(EVIDENCE)" || (echo 'EVIDENCE=/absolute/path is required' >&2; exit 2)
$(PY) scripts/build_webarena_replay_report.py --results "$(EVIDENCE)" $(if $(filter 1,$(ENGLISH)),--include-english,)
$(PY) scripts/build_webarena_replay_report.py --results "$(EVIDENCE)" $(if $(REPORT_LANGUAGE),--language "$(REPORT_LANGUAGE)",) $(if $(filter 1,$(ENGLISH)),--include-english,)

trajectory-replay-report-check: runtime-check
$(PY) scripts/check_webarena_replay_report.py reports/trajectory-replay
Expand Down Expand Up @@ -166,7 +167,7 @@ resource-image:

public-benchmark-report: runtime-check
@test -n "$(EVIDENCE)" || (echo 'EVIDENCE=/absolute/path/to/reviewed-public-benchmark-evidence is required' >&2; exit 2)
$(PY) scripts/build_report.py --evidence "$(EVIDENCE)" --output reports/webfetch-public-benchmarks $(if $(filter 1,$(ENGLISH)),--include-english,)
$(PY) scripts/build_report.py --evidence "$(EVIDENCE)" --output reports/webfetch-public-benchmarks $(if $(REPORT_LANGUAGE),--language "$(REPORT_LANGUAGE)",) $(if $(filter 1,$(ENGLISH)),--include-english,)
$(PY) scripts/check_report.py reports/webfetch-public-benchmarks
$(PY) scripts/check_report_links.py reports/webfetch-public-benchmarks

Expand Down
12 changes: 10 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,8 @@ Install an extra with `uv sync --frozen --extra NAME`. Browser binaries, Docker,

| Output | What you will find |
| --- | --- |
| `report/index.html` | Comparisons, task results and evidence links |
| `report/en/index.html` | English comparisons, task results and evidence links |
| `report/index.html` | Report entry; opens the selected language |
| `results.jsonl`, `summary.json` | Scores and aggregates for scripts or further analysis |
| `manifest.json`, `dataset.json` | Methods, versions, settings and tasks used |
| `artifacts/` | Saved responses and other evidence |
Expand All @@ -98,7 +99,14 @@ Rebuild a report from saved evidence without repeating browser or API calls:
uv run --frozen browser-harness-eval report /absolute/path/to/run
```

Reports default to Chinese. Supported builders can generate English on request; an absent English edition shows a notice instead of stale pages.
The Web Fetch CLI opens English by default, with a switchable Chinese edition. Choose Chinese when starting a run, or change the language of a saved report:

```bash
uv run --frozen browser-harness-eval run --delay 0 --language zh
uv run --frozen browser-harness-eval report /absolute/path/to/run --language en
```

Rebuilding without `--language` keeps the previous choice. Language changes do not repeat calls or change scores; task wording, responses and logs retain their original language. English (`en`) and Chinese (`zh`) are supported; other language codes are rejected. See [report language support](docs/report-hosting.md#report-languages) for the standalone builders and historical reports.

To publish online:

Expand Down
12 changes: 10 additions & 2 deletions docs/README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,8 @@ uv run --frozen browser-harness-eval run --delay 0

| 输出 | 内容 |
| --- | --- |
| `report/index.html` | 比较、任务结果和证据入口 |
| `report/en/index.html` | 英文比较、任务结果和证据入口 |
| `report/index.html` | 报告入口,打开所选语言 |
| `results.jsonl`、`summary.json` | 供程序分析的评分和汇总 |
| `manifest.json`、`dataset.json` | 使用的方法、版本、设置和任务 |
| `artifacts/` | 保存的响应及其他证据 |
Expand All @@ -98,7 +99,14 @@ uv run --frozen browser-harness-eval run --delay 0
uv run --frozen browser-harness-eval report /absolute/path/to/run
```

报告默认中文。支持英文的构建器可按需生成英文;未生成时,英文入口显示说明,不会展示旧页面。
Web Fetch 命令默认打开英文报告,并保留可切换的中文版。开始评测时可以选中文,也可以更改已有报告的语言:

```bash
uv run --frozen browser-harness-eval run --delay 0 --language zh
uv run --frozen browser-harness-eval report /absolute/path/to/run --language en
```

重建时不传 `--language`,会沿用上次的选择。切换语言不重新调用浏览器或服务,也不改变评分;任务原文、响应和日志保留原来的语言。目前支持英文(`en`)和中文(`zh`),其他语言代码会报错。独立构建器和历史报告的支持范围见[报告语言说明](report-hosting.md#report-languages)。

在线发布:

Expand Down
21 changes: 21 additions & 0 deletions docs/report-hosting.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,27 @@

Publish the generated `report/` directory. Keep the rest of the run directory locally so you can rebuild and audit it.

## Report languages

The Web Fetch CLI defaults to English. `run --language zh` generates Chinese only; `report <run> --language en` rebuilds both editions and opens English. A rebuild without `--language` keeps the saved choice, including Chinese-only reports created by older versions.

| Builder | Language selection |
| --- | --- |
| `browser-harness-eval run`, `report`, `rescore` | `--language en` or `--language zh`; new runs default to English |
| `scripts/build_report.py`: standard Web Fetch, local audit, WCXB, WebMainBench sample, research companion | `--language en` or `--language zh`; default English |
| `scripts/build_browser_use_report.py` | `--language en` or `--language zh`; default English |
| `scripts/build_webarena_replay_report.py` | `--language en` or `--language zh`; default English |
| Complete 545-case WebMainBench and diagnostic-cohort reports | Chinese-only content; omitted language keeps the historical Chinese default; explicit `en` is rejected |
| Curated replay example, public WebArena recording report and catalog | Chinese-only renderers; no language option |

Builders keep the saved language when rebuilding without `--language`. Make follows the same rule; set an explicit override through `REPORT_LANGUAGE=en` or `REPORT_LANGUAGE=zh`.

English builds retain a Chinese edition so readers can switch languages. Chinese-only builds show a notice at the English entry. These choices affect report text and navigation, not scores, timings or saved evidence. Task names, source quotations, responses and logs stay in their original language.

Upload the entire report directory, including `en/`, assets and evidence. The report root opens the selected language; Chinese links remain usable when English is the default. Serve the directory over HTTP for evidence that loads on demand.

Only `en` and `zh` are supported. Unsupported codes fail before a run starts or an existing report is replaced. Browser or operating-system language does not silently change a report. To add a language, extend the owning renderer's translation catalog and route, value and evidence-link checks; see [contributing](../CONTRIBUTING.md).

## 1. Choose a site

[Artifact Site](https://github.com/lexmount/artifact-site) hosts multi-page HTML reports and keeps version history. Sign in or create an account on one of these deployments:
Expand Down
Loading
Loading