Skip to content

Make Web Fetch method metadata reusable across versions and cohorts - #59

Merged
lanyue-llk merged 19 commits into
mainfrom
codex/reusable-webfetch-reports
Oct 22, 2026
Merged

lanyue-llk merged 19 commits into
mainfrom
codex/reusable-webfetch-reports

Conversation

@Maisiqi

@Maisiqi Maisiqi commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor
Web Fetch 报告改动图:配置集中、执行记录读取、旧模块清理与历史解析绑定

Web Fetch reports could reuse an earlier run's settings and describe registered examples as measured facts. This change makes saved execution evidence authoritative, centralizes reusable bilingual method metadata, and removes retired report-specific paths. It also repairs source-bound replay of historical resource projections without changing saved answers or scores.

Reader-visible changes

  • Read timeouts, delays, retries, versions and participant identities from saved execution records. Missing facts remain unavailable; catalog examples cannot substitute for measurements.
  • Keep reusable product descriptions, interfaces, access requirements and source links in one bilingual catalog. Registered examples use that wording in both languages, including document/media caveats and hosted API settings.
  • Use observed output routes and the dataset's task order in interface tables. Equivalent recorded modes stay grouped, while genuinely different transport contracts remain distinct.
  • Distinguish capability-source version mismatch from missing verification. Localize the complete configured-capability legend and resource sampling/scope notes, including missing sampling intervals.
  • Derive methods omitted from a resource cohort from its participant data. Omission alone does not establish that a method is remote. CPU utilization and transfer rates remain neutral rather than receiving lower-is-better rankings.
  • Remove the generic template's Chromium-only claim, the obsolete local-audit notice, unused historical correction translations and retired article generators with no supported callers. Structured release history remains authoritative. No historical report or evaluation data is edited.

Scoring semantics and evidence compatibility

Fixes #60. Current resource declarations explicitly record their parser:

 {"format": "html_attribute_urls", "pointer": ["elements"],
+ "srcset_parser": "html-candidates-v1",
  "base_url": "https://example.invalid/page"}

The current parser preserves commas inside URLs and handles HTML candidate descriptors. Historical declarations without that field select semantics only through a proven scoring-source hash. The cached registry maps hashes to parser identities and records the repository, exact revision, source path and source SHA-256. It contains no report names, task IDs or saved answers. Unknown identities and conflicting explicit declarations fail; the reader never tries a different parser to make an answer match.

The registry includes the two previously proven comma-splitting sources, an additional identical legacy implementation discovered by scanning saved records, and main's corrected parser whose caller omitted the declaration. For main, evaluator revision 84c177d97da3b82567d9881e377aa728929cf129 recomputes to scoring hash 7e1b468e981cfe1da89d443047aff7facd841cd03f00bfc4b016ed67ba292da3; its resource_urls.py bytes match the currently installed parser. The additional legacy source was independently reconstructed at repository revision 4ef472ff151274e9c526be58bf0e056a1591f420.

The synthetic route baseline changes 18 provider/configuration hashes, not 16. These bind the entire native-projection source file, so changing that file changes the policy identity even for routes without srcset. Substituting the previous source bytes reproduces the complete previous baseline exactly; invocation parameters are unchanged. The earlier parser-declaration commit and this registry/cache change were checked separately.

Validation: UV_OFFLINE=1 make ci passes on 20e74000: 6,304 Python tests and 2,742 subtests passed, 114 skipped, plus naming/lint, JavaScript UI, native adapter, fixture and all installed-wheel checks. Focused regressions passed (317 tests and 35 subtests). The repeated read-only saved-answer inventory confirms the missing parser bindings are repaired with no new failures; unrelated archived-file hash failures remain rejected, and records without declarations are not counted as validated projections. Full inventory and before/after diagnostics remain private rather than entering Git. Frozen data is unchanged. GitHub CI for 20e74000 also passed (run 39723772127): 6,279 tests and 2,742 subtests passed, 139 skipped; all installed-wheel checks passed, rendered reference capture passed (24 passed, 1 skipped), and Base CLI checks passed on Python 3.12, 3.13 and 3.14. The optional Claude review was skipped, not counted as a passed review.

Recorded identity and installation bindings

  • An explicit recorded engine is authoritative, including an unregistered engine. A participant named moli with recorded engine new-engine keeps that identity and receives no Moli installation instructions.
  • Product documentation remains shared, while executable variables follow the participant configuration. Measured reports use a configuration only when its bytes match the execution manifest hash; unavailable, changed or conflicting bindings are disclosed instead of replaced with current defaults. Only variable names are rendered, never executable paths or credential values.
  • WCXB version labels and release links now use recorded implementation identities. Its headline uses the actual configuration count, and surrounding text no longer assumes six configurations. This does not claim that every track-specific comparison or interpretation rule has become a generic report template.
  • Regression coverage includes five version aliases, unknown-engine name collisions with and without versions, multiple measured versions, changed/missing/conflicting configurations, resource-executable selection, and WCXB builds with different versions and a smaller cohort. Historical parser selection remains source-identity based; additional classes or report-specific aliases are unnecessary.

Validation at 6d994aae: UV_OFFLINE=1 make ci passed locally: 6,313 Python tests and 2,742 subtests passed, 114 skipped, followed by the JavaScript UI, native-adapter, fixture and installed-wheel gates. GitHub CI run 39749929169 passed on the same commit: 6,288 tests and 2,742 subtests passed, 139 skipped; installed-wheel gates passed; rendered reference capture passed (24 passed, 1 skipped); Base CLI checks passed on Python 3.12, 3.13 and 3.14. Optional Claude Review was skipped.

WCXB findings and release checks

The renderer no longer repeats the historical PR-specific case findings on the home page. Interpretation stays in the existing external, hash-bound bilingual guide. The home page retains measured comparisons and links to that guide; it no longer asserts historical batch dates or source-code causation for a new cohort.

  • Build and release checks use the profile's participants and current population, not a fixed case count or participant list. Optional-feature evidence paths come from the content binding, and the receipt's case must belong to the current population; either observed outcome is allowed when its original receipt and outputs verify.
  • Guide checks verify the bound content, current measured values, method coverage and evidence. Negative controls mutate the actual supplied article. They no longer require historical case IDs, image filenames, versions, score changes or a fixed illustration count. Visual checks retain image decoding and use the supplied illustration inventory and page categories.
  • Synthetic regressions cover a different task inventory, a two-participant public build, opposite optional-feature outcomes, incorrect populations, changed findings and mismatched measurements. The public-build test verifies every source file remains byte-identical. No historical evidence, generated report, profile or content binding was edited.
  • This follow-up changes only Web Fetch implementation, tests and documentation. No Browser Use or trajectory-replay changes are included.

Validation at a295474d: 6,316 Python tests and 2,742 subtests passed locally (114 skipped), along with UI/native-adapter/fixture checks. The package gate was rerun after the final source cleanup and passed. The final focused WCXB checks also passed. GitHub CI run 39755465011 passed on this commit: 6,291 Python tests and 2,742 subtests passed (139 skipped), all installed-wheel gates passed, rendered reference capture passed (24 passed, 1 skipped), and Base CLI checks passed on Python 3.12, 3.13 and 3.14. Optional Claude Review was skipped. The PR remains unmerged.

Configuration migration and review decisions

  • Validation at 13a8bf24: all 55 report registry tests pass. GitHub CI run 39735168522 passed, including the complete main test job and Python 3.12/3.13/3.14 Base CLI checks. Optional Claude Review was skipped.

  • Moli now inherits native_markdown_browser and overrides only document within task_capabilities; its own task_interfaces list is unchanged. The complete resolved Chinese and English entries are field-for-field identical to 20e74000, with compact canonical-hash regression checks for both languages. Other translation cleanup and report extraction remain outside this change. Remote main was checked at 28534e24, still pinning evaluator 84c177d9; no additional historical parser binding is needed.

  • Product metadata lives in harness/web_fetch/data/report-methods.json; executable selection and call settings remain in provider configuration. Remove obsolete execution-config source_url values and put documentation links in the catalog. These links never replace binary/call provenance.

  • For a supported tool version, configure the executable and collect new evidence. A new tool needs catalog metadata and execution configuration; a genuinely new interface still needs adapter code. harness/web_fetch/README.md documents the file-by-file steps, linked from both root READMEs.

  • The earlier evaluator pin update remains a separate commit. make bump-lexbench REV=<merged-commit> checks ancestry and updates the dependency pin, lock and definition bindings together through the existing shared owner.

  • Expanded numeric/version guards cover resource and shared component modules. Added a recursive catalog guard against unbound “this run”/“本轮” claims, with negative controls. Recorded adapter/runtime-parameter fields retain their measured wording.

  • Accepted the small task-order loop hoist. No label-wrapper rewrite is needed: provider_label already delegates directly to browser_method_label, so different helper names do not establish divergent labels.

  • Deferred replacing the saved log-note translation with a new bilingual evidence field: that would introduce a new input contract while still requiring support for frozen old notes. The existing translation is parameterized by counts, and this change preserves frozen input bytes. Existing variable-count translation tests remain. Broader track extraction and wholesale translation removal require their own caller/evidence audit.

  • The diagnostic JavaScript collector still uses comma splitting for srcset; it is separate from native-answer scoring. This PR's compatibility fix does not claim to repair that collector or rewrite its historical diagnostics. No new issue is published automatically from a third-party suggestion.

No provider calls, independent result review, report publication or PR merge are performed by this change.

Participant descriptions and tied results

  • WCXB methodology and interface examples now list only the measured participants, reusing the existing route descriptions.
  • Home summaries name every tied F1 or mean-latency leader; unique leaders remain singular, consistent with neutral table cells for ties.
  • Bilingual synthetic regressions cover smaller participant sets, both tied and unique leaders, and agreement between prose and table highlights. Only the Web Fetch renderer and its tests changed; historical evidence and reports are untouched.

Validation at 48072d19: UV_OFFLINE=1 make ci passed locally: 6,318 Python tests and 2,742 subtests passed (114 skipped), plus lint, UI, native adapters, fixtures and all installed-wheel checks. GitHub CI run 39759791224 passed for this exact commit, including the full test job and Base CLI checks on Python 3.12, 3.13 and 3.14. Optional Claude Code Review was skipped, not counted as a passed review. No merge performed.

Tied-metric release checks

The WCXB release gate no longer requires a unique winner to exist. It first validates actual numeric highlights with the shared presentation checker, then tests missing highlights when a winner exists and incorrect highlights on neutral cells, including all-tied comparisons. The bound-interpretation corruption checks no longer demand an optional winner marker; content hashes, measured values and semantic highlight checks remain enforced.

Bilingual generated-report regressions cover all-tied and unique-winner inputs, incorrect highlights, and missing required highlights. Only the Web Fetch checker and tests changed; no historical evaluation data or report was modified.

Validation at 4d1d0397: UV_OFFLINE=1 make ci passed: 6,320 Python tests and 2,742 subtests (114 skipped), naming/lint, UI/native-adapter/fixture checks and all installed-wheel checks. GitHub CI run 39763414055 passed for this exact commit, including the full test job, rendered reference capture and Base CLI on Python 3.12/3.13/3.14. Optional Claude Code Review was skipped, not counted as a passed review. No merge performed.

Registered aliases and comparison roles

The new review finding was reproduced with both an additional registered version alias and a renamed baseline participant. WCXB no longer maintains a renderer-only route dictionary or assigns comparison roles by historical participant names. Methodology, provider pages and interface examples use the shared method metadata; registered request examples are explicitly distinguished from recorded routes, and absent route evidence is disclosed.

Build, render and release checks reuse the existing scoring owner paired_latency_methods, matching the profile binary hashes to certified implementation identities. Missing or ambiguous matches still fail. This preserves current profile/evidence bytes without adding a name-based fallback.

Regressions add a registered version to the existing cohort, rename its baseline, and build a three-participant cohort through the public builder with both comparison aliases changed. Both report languages are checked and source evidence stays byte-identical. Changes are limited to Web Fetch code, tests and documentation.

Validation at 887c8a0d: UV_OFFLINE=1 make ci passed locally: 6,323 Python tests and 2,742 subtests (114 skipped), naming/lint, UI/native adapters, fixtures and all installed-wheel checks. GitHub CI run 39775499667 passed on this exact commit, including the full test job, rendered reference capture and Base CLI checks on Python 3.12/3.13/3.14. Optional Claude Code Review was skipped, not counted as a passed review. No historical evaluation data, published reports or current report profiles were modified. No merge performed.

@lanyue-llk lanyue-llk left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed at 13a8bf2. Two reproducible metadata/reproduction defects need changes; see inline comments.

The purpose is to separate reusable bilingual product documentation from saved execution facts, consolidate method metadata, and preserve source-bound historical resource projection. The catalog, template inheritance and source-hash parser registry are suitable abstractions. The historical parser registry is keyed by implementation identity rather than report/task names, so it does not require a branch for each report. Additional classes are unnecessary; the remaining defects are identity precedence and the boundary between product-level documentation and participant-specific executable configuration.

Validation: 652 existing targeted tests and 40 subtests passed across method registration, interfaces, capability sources, execution contracts, report presentation, native projection/routes, resource boundaries, dependency updates and local revision/report builds. Six added regression scenarios fail: five executable-variable bindings and one unknown recorded engine. No provider calls, measured-result review, publication or source changes were performed.

Report-instance coupling is reduced, but still exists in the current renderer. In generate_wcxb, the accounts output still hard-codes Moli 1.1.8, and nearby cohort descriptions assume six configurations. These predate this PR and are not additional introduced-bug findings. They should come from the profile/participant data before this renderer can be described as independent of a particular report instance; moving product prose into a catalog alone does not remove them.

Comment thread harness/web_fetch/methods.py
Comment thread harness/web_fetch/methods.py

@lanyue-llk lanyue-llk left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rechecked the latest head against the earlier findings and the requirement to reuse report code across versions and participant cohorts. The existing executable-variable and unknown-engine controls now pass. 207 focused tests passed, including six earlier review controls. One additional scenario still fails: adding an already registered version alias to an otherwise complete WCXB renderer input crashes in the newly introduced route-description dictionary. A separate alias-renaming control also confirms the remaining fixed Moli comparison dependency. No saved evidence or production code was changed.

Comment thread harness/web_fetch/report.py Outdated

@lanyue-llk lanyue-llk left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P0/P1-focused follow-up at 887c8a0: no new P0 or P1 finding in the examined scoring/projection compatibility, saved-evidence verification, implementation identity, execution metadata and report-generation boundaries. 320 targeted tests passed, including the earlier method-identity controls. Three additional controls passed: a distinct registered version can join the cohort, the baseline can use its registered alias, and duplicate binary identities are rejected as ambiguous. The earlier two alias crashes are fixed. The additional version control supplies its distinct binary hash and retained artifacts; the renamed baseline retains its original binary identity and supplies the renamed artifact path. Historical projection tests cover exact source-bound replay and missing/unknown parser rejection. This is a focused review result, not an approval of historical benchmark scores or a claim that all saved provider outputs were rescored.

@lanyue-llk
lanyue-llk merged commit 0c8e804 into main Oct 22, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Version srcset projection semantics for reproducible receipts

2 participants