Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
55f9d40
Diagnose browser benchmark failures and publish repair evidence
Sep 17, 2026
38bbbbf
Expose diagnostic replay appendix through release targets
Sep 17, 2026
82405e0
Tighten report source and path privacy guards
Sep 17, 2026
8ad269b
Report unmatched diagnostic browser audits explicitly
Sep 17, 2026
16f0837
Cover diagnosis pages in semantic release checks
Sep 17, 2026
e1737bc
Require absolute retrieval evidence and safe closure paths
Sep 17, 2026
f6196b2
Reject symlinked report evidence paths
Sep 17, 2026
2b4add1
Add diagnostic replay qualification candidates
Sep 17, 2026
75e5d60
Clarify unresolved retrieval qualification in replay report
Sep 17, 2026
e7aa40e
Label limited-scope retrieval audits in replay details
Sep 17, 2026
eab9eed
Bind retrieval candidates to recompiled canonical prefixes
Sep 17, 2026
d5b2a15
Fail closed on unproven retrieval observation tails
Sep 17, 2026
0cb703a
Exercise profile-save evaluator correction end to end
Sep 17, 2026
eea1f76
fix(replay): require full observed scope for empty retrieval
Sep 17, 2026
95c74ef
Show latest Moli affected-task diagnostics separately
Sep 17, 2026
cdbe5be
Predeclare additional mutation completion diagnostics
Sep 17, 2026
b67385c
Predeclare remaining mutation completion diagnostics
Sep 17, 2026
f998da9
Normalize textarea HTML observation across parsers
Sep 17, 2026
9df4d0b
Predeclare wishlist persisted-state observer for task 465
Sep 17, 2026
9137a7d
Predeclare durable order observer for task 506
Sep 17, 2026
d209e61
Observe GitLab comments through complete discussions API
Sep 17, 2026
147a400
Fix persisted-state observers for dynamic address and post body
Sep 17, 2026
82b36ad
Merge remote-tracking branch 'origin/main' into codex/replay-qualific…
Sep 17, 2026
624ec66
Prepare corrected 90-task three-browser replay and evidence report
Sep 18, 2026
159dbfb
Validate every task reset receipt at three-browser aggregate boundary
Sep 18, 2026
a01548d
Pin original cross-track report to immutable replay inputs
Sep 18, 2026
13118ef
Bind replay dataset to corrected fork and method-level reset
Sep 18, 2026
f3b27c8
Bind corrected task to paired replay qualifications
Sep 18, 2026
8f3e644
Clarify shared BrowserTool scope in unified replay report
Sep 18, 2026
5ab2ee4
fix(replay): enforce method-scoped reset in qualification receipts
Sep 18, 2026
875f511
docs(replay): describe current three-method cohort workflow
Sep 18, 2026
a537fba
fix(replay): name per-method site reset scope accurately
Sep 18, 2026
5b7bbc7
Bind replay cohort to latest Moli main and new report site
Sep 18, 2026
da21388
fix(replay): stabilize sequential Chromium qualification and shared o…
Sep 18, 2026
e0e3833
fix(replay): preserve revised input provenance and update regression …
Sep 18, 2026
44c6844
fix(report): expose corrected acceptance from bound evaluator evidence
Sep 18, 2026
0f9b7fe
fix(report): distinguish acceptance authority from independent review…
Sep 18, 2026
2918063
fix(report): expose recorded page state alongside step errors
Sep 18, 2026
2104da9
Freeze released and PR Moli 1.1.8 comparison participants
Sep 18, 2026
68f1b40
Localize replay failure treatment labels in details and dialogs
Sep 18, 2026
fc6ecfe
Distinguish unmatched network acceptance from absent requests
Sep 18, 2026
523bbf6
Complete three-method replay report and preserve historical review
Sep 18, 2026
5d11a3f
Bind new verified three-browser replay report publication
Sep 18, 2026
bf92b05
Audit replay input symmetry and upstream task contract changes
Sep 20, 2026
5e1c4dd
Add evidence-derived failure family matrix and drilldown release checks
Sep 20, 2026
7fcafae
Bind read-only geometry probes and audit changed task contracts
Sep 20, 2026
f43acfe
Restore final-save scoring and expose redirected request recording de…
Sep 20, 2026
624a961
Add bilingual replay interpretation and self-contained article export
Sep 20, 2026
740f7e3
Bind five additional replay failures to read-only geometry evidence
Sep 20, 2026
6c707dc
Separate replay readiness races from browser defects with dispatch ev…
Sep 20, 2026
fc1f203
Explain replay mechanisms with bilingual diagrams and measured specimens
Sep 20, 2026
c32a055
Verify cookie-gated header loss and restore cart quantity acceptance
Sep 20, 2026
512e9d6
Explain form lookup work with regression specimens and bilingual diag…
Sep 20, 2026
640211d
Make replay English generation opt-in and extend mechanism article
Sep 20, 2026
67d4b97
Make Browser Use English generation and checks opt-in
Sep 20, 2026
f062be4
Exclude unused English diagnosis prose from Chinese replay bundles
Sep 20, 2026
6ceb31e
Avoid duplicate standalone article image payloads
Sep 20, 2026
f0d794a
Make Web Fetch English reports opt-in
Sep 20, 2026
9cad952
Support staged upload for large replay reports
Sep 20, 2026
0d2d6de
Allow slow staged artifact uploads
Sep 20, 2026
8da79a6
Bind replay report to published version
Sep 20, 2026
e871316
fix(replay): restore evidence bindings and integrate main
Sep 20, 2026
1864f52
Append Moli 1.1.9 and rebuilt PR replay results
Sep 20, 2026
67c64fc
Fix standalone replay interpretation access and navigation
Sep 21, 2026
2e4f1e0
Bind verified standalone interpretation publication
Sep 21, 2026
170bae3
chore(replay): sync latest main
lanyue-llk Sep 22, 2026
8c57fd5
refactor(replay): remove retired diagnostic report pipeline
lanyue-llk Sep 22, 2026
f39edab
refactor(replay): externalize report content and share execution
lanyue-llk Sep 22, 2026
926de10
refactor(replay): archive retired diagnostic records
lanyue-llk Sep 22, 2026
72de960
chore(replay): sync main and retain both asset contracts
lanyue-llk Sep 22, 2026
afa380f
refactor(replay): remove archived diagnostic snapshots
lanyue-llk Sep 22, 2026
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
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

The dashboard reading page and standalone HTML are two presentations of the same authored article. Use the current report renderer and preserve its integrity, safety and localization contracts.

Generate Chinese by default. English prose, illustrations, rendering and language-specific checks run only on an explicit manual request. An absent English edition gets a not-generated notice and a return link, not stale translated pages. Preserve translation sources without distributing unused English assets. Apply cross-language parity checks only when both editions are generated; always test the notice in a Chinese-only release.

## Reading layout

Choose a clear hierarchy for title, introduction, sections, body and captions. Align headings and their supporting figures deliberately, keep body lines readable, and check the result at actual display sizes. Do not create an oversized heading from an editing instruction or shrink a necessary qualification into unreadable text.
Expand Down
2 changes: 2 additions & 0 deletions .agents/skills/benchmark-report/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ Read the repository's `AGENTS.md` first. Project rules override this general ski

## 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.

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.
3. Let each method use its strongest documented route to produce the required output. Equalize the task, inputs, output contract, call budget, and scoring. Do not require identical internals. Record material asymmetries such as local versus remote execution, cold versus warm start, bundled conversion, network transit, account tier, and billable time.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Report and release

## 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.

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.

## Reader-facing structure

Organize around reader questions, not storage tables. A useful report usually makes these answers easy to find:
Expand Down
9 changes: 5 additions & 4 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# Report maintenance

- Keep report-specific illustrations and review payloads outside Git, alongside frozen evidence. Commit only their compact path/hash bindings. WCXB builds read the profile-bound files from `<evidence>/report-assets/` and preserve the same relative paths in the public package; restore missing files from the profile's pinned Artifact Site version, never from an unversioned latest report. Do not silently fall back to a repository copy.
- Remove retired report-specific generators and their exclusive tests when no supported entry point calls them. Preserve published reports and historical evidence. Keep behavioral tests for the supported build, package, and publication boundaries; do not replace them with assertions about private helper structure.
- Keep report-specific prose, illustrations and review payloads outside Git, alongside frozen evidence. Commit compact path/hash bindings instead. The replay build reads `research/trajectory-replay-content.json` from the `--content` directory (default: the data home's `report-assets/trajectory-replay/`); restore missing content from the pinned Artifact Site version, not an unversioned latest report. Do not silently fall back to a repository copy. Compact task definitions, acceptance contracts and provenance annotations remain versioned inputs.
- Remove retired report-specific generators and their exclusive tests when no supported entry point calls them. Preserve published reports and historical evidence. Keep behavioral tests for supported build, package and publication boundaries; do not replace them with assertions about private helper structure.
- WCXB builds read profile-bound files from `<evidence>/report-assets/` and preserve the same relative paths in the public package; restore missing files from the profile's pinned Artifact Site version, never from an unversioned latest report. Do not silently fall back to a repository copy.

## Common report presentation

Expand All @@ -28,7 +29,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.
- Chinese and English are two localized views of one report model. Their HTML route inventories, section order, tables, values, filters and evidence links must match one-to-one. Localize interface and explanatory prose for each language; keep task names, IDs, URLs, references, provider output and other measured evidence unchanged.
- 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.
- 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 Expand Up @@ -57,5 +58,5 @@ These requirements apply to **all** report tracks; browser-specific rules below
- Split environment preparation, browser-session setup, Agent run, BrowserTool wall time, evidence finalization and evaluator time at collection. Publish the self-hosted deployment topology and image identity; claim per-execution reset/readiness only when a preparation receipt binds reset, readiness and application health.
- Formal report prose is reader-facing: no prompts, reasoning, internal work narration, conversational rebuttals or references to parallel sessions. Review pages contain review rounds and corrections, not per-case audit tables; release notes contain reader-visible effects.
- English routes may preserve measured task names, IDs and evidence verbatim, but all report-authored interface and explanatory prose must be localized. Release checks must reject known untranslated interface markers and untranslated accessibility attributes.
- Before release, inspect every core route class in Chinese and English at desktop and narrow widths in both themes. Prevent vertical table labels, clipped controls and unreadable evidence; use ImageGen raster assets or Mermaid rather than SVG for Browser Use diagrams.
- Before release, inspect every core route class in each explicitly generated language at desktop and narrow widths in both themes, plus the English not-generated notice when applicable. Prevent vertical table labels, clipped controls and unreadable evidence; use ImageGen raster assets or Mermaid rather than SVG for Browser Use diagrams.
- Keep routine report checks fast and deterministic; they cover structure, evidence, links, terminology, and static readability guards without launching a browser. Run the separate full release check before packaging or publishing; it adds the complete cross-language, cross-theme, desktop and narrow-width visual gate.
8 changes: 4 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ ci: naming-check test fixture-smoke

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
$(PY) scripts/build_report.py --evidence "$(EVIDENCE)" --output reports/webfetch $(if $(filter 1,$(ENGLISH)),--include-english,)

report-check: runtime-check
$(PY) scripts/check_report.py reports/webfetch
Expand All @@ -54,7 +54,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
$(PY) scripts/build_browser_use_report.py $(foreach path,$(EVIDENCE),--evidence "$(path)") --output reports/browser-use $(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 @@ -73,7 +73,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)"
$(PY) scripts/build_webarena_replay_report.py --results "$(EVIDENCE)" $(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 @@ -106,7 +106,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
$(PY) scripts/build_report.py --evidence "$(EVIDENCE)" --output reports/webfetch-public-benchmarks $(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
4 changes: 4 additions & 0 deletions evaluation/browser-use/current-report.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@
"source_path": "research/browser-use-failure-cause-review.json",
"source_sha256": "a11134919f5e7b9a65c601374211e20e7e940f82e6f363ed025c49b52336e721"
},
"trajectory_replay_bridge": {
"source_path": "research/browser-use-trajectory-replay-bridge.json",
"source_sha256": "731c04735e6b58d271d4ed5d43514300060c3ecfca0f54d7bc826c1300dd2ac5"
},
"publication": {
"base_url": "https://artifact-hub.app.lexmount.com",
"site_slug": "7l77EeXPRfml",
Expand Down
64 changes: 45 additions & 19 deletions evaluation/trajectory-replay/webarena-verified/README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,26 @@
# WebArena-Verified verified trajectories

`trajectories.json` is the compact, versioned trajectory portion of the benchmark dataset.
Each trajectory is one verified feasible BrowserTool path, not the task's only correct path.
`current-run.json.dataset.path` and its SHA-256 identify the authoritative trajectory
input for a formal build; currently this is `trajectories-corrected.json`.
`trajectories.json` is the retained predecessor used by qualification and correction
provenance. It is not a second current dataset. Each trajectory is one verified feasible
BrowserTool path, not the task's only correct path.

WebArena task definitions and shared evaluator fixes belong in the
`lexmount/webarena-verified` fork. BrowserTool actions, selector compilation, local
qualification and method comparisons belong here: the upstream task dataset does not
define those browser-tool trajectories. Historical correction catalogs in `revisions/`
are immutable inputs bound by retained cohorts, not copies of report output; removing
them must not make historical contracts impossible to resolve.

Authored report content and illustrations live outside Git. The report command takes
`--content` (default `$BROWSER_EVAL_DATA_HOME/report-assets/trajectory-replay`, with the
data home defaulting to `~/.browser-eval`). `research/trajectory-replay-content.json`
binds every consumed file. The prior Git revision retains migration recovery copies;
published report versions and physical execution evidence remain unchanged.

`current-run.json` is the run authority for the next formal replay. It freezes the same 90-task
selection used by the current Browser Use evaluation, the two registered browser methods, resource
selection used by the current Browser Use evaluation, the registered browser methods, resource
limits, and the isolation schedule. The private ready-to-run seed manifest must contain exactly one
canonical candidate for each of those 90 tasks. The current inventory is assembled from 60 clean
autonomous successes and 30 reviewed repairs; successful executions from different methods are
Expand Down Expand Up @@ -34,23 +50,33 @@ candidate evidence, not additional tasks.
`BROWSER_EVAL_DATA_HOME`; this directory stores deterministic actions and provenance hashes.
- The current self-hosted WebArena deployment has one fixed-port site stack, so a formal suite owns
the physical environment exclusively. It runs every task for one browser before starting the next
browser, restores the official fixture before every task, and tears down both the browser and site
containers between browsers. Parallel methods are valid only after separate site stacks also have
separate containers, data stores, ports, gateways, and lock namespaces; multiple browser
browser, restores the site stack once before each browser method, and tears down the browser and site
containers between methods. It does not reset the site between tasks. Parallel methods are valid
only after separate site stacks also have separate containers, data stores, ports, gateways, and
lock namespaces; multiple browser
containers against one site stack are not independent environments.
- Formal execution requires clean browser-eval and CowAgent checkouts and binds their commits, the
resolved browser and site image identities, and the frozen CPU, memory, and sampling limits into
the resumable receipt. A resume with different runtime identity is rejected. Browser storage,
cache, cookies, permissions, service workers, and IndexedDB are cleared before every task; failed
teardown aborts the suite. Any pre-action context recovery writes a new physical-evidence
directory instead of overwriting the first one.
- Formal execution binds each method to frozen actions, a browser-binary hash, the site map, and a
method-scoped site reset receipt. A fresh BrowserTool context is created for each task; browser
storage does not carry between tasks, while site data is not reset between tasks. Every physical
execution and its evidence is retained separately.
- More than one trajectory may be retained for a task when paths are materially different and
independently satisfy the same promotion gate.

Run the frozen suite with `scripts/run_webarena_trajectory_replay.py`. Diagnostic subsets are
explicitly non-promotable. `--qualification-engine chromium` runs the complete frozen task set on
the reference browser and is the only scope that may promote the standard trajectory dataset.
After all 90 qualify, promote that receipt with `scripts/promote_webarena_trajectories.py`, then run
the measured method matrix with `--qualified-dataset` and no scope option. The runner rejects formal
execution when that dataset is missing, incomplete, or differs from the frozen profile, seeds, or
canonical actions. Never edit a verdict or verification claim by hand.
Freeze each method's exact 90-task inputs with `scripts/freeze_webarena_three_method_inputs.py`,
run each complete method cohort with `scripts/run_remote_three_method_cohort.py`, and bind the
certified cohorts with `scripts/aggregate_webarena_three_method_cohorts.py`. Each method
receives one site reset before its first task. The runner rejects a changed binary, task set,
action sequence, or reset policy. Diagnostic subsets never enter the formal matrix. Never edit a
verdict or verification claim by hand.

The report presents every registered method with its recorded protocol. Diagnostic-only cohorts cannot
enter its score-bearing matrix or add a separate result appendix.

Adding a browser version appends a method and its complete cohort; existing results remain
unchanged. Historical failure diagnostics may retain their original cohort binding through
`inherited_result_cohorts` in the review record. Each inherited cohort must be hash-bound, use
the same dataset, and have every logical result preserved exactly in the expanded matrix.
When appended cohorts use a corrected evaluator, declare the exact method-specific correction ID
and corrected task hash under `acceptance_revisions`. The task page retains both acceptance
versions, and measurement notes identify the affected task IDs. Identical frozen trajectory
hashes do not prove identical evaluator revisions. Historical verdicts are not rewritten.
Loading
Loading