Skip to content

refactor(openclaw): remove the bundled judge adapter - #93

Open
BitmapAsset wants to merge 3 commits into
feat/0.15-usability-1from
chore/drop-jev
Open

BitmapAsset wants to merge 3 commits into
feat/0.15-usability-1from
chore/drop-jev

Conversation

@BitmapAsset

@BitmapAsset BitmapAsset commented Nov 10, 2026 •

Copy link
Copy Markdown
Owner

The OpenClaw plugin shipped an optional provider-specific judge adapter, and public examples used a third-party model id. This removes the adapter and uses example-judge throughout the sample data, playground and assertions.

Stacked on #92 (feat/0.15-usability-1).

  • Plugin version 0.3.0 supports auto (the host's configured decision model, else keywords) and keyword. Legacy classifier: "jev" still loads, warns once, and uses keywords without calling a model or network API.
  • classifierShadow, jevModel and jevKeyFile stay declared in the manifest schema as deprecated no-ops with one load-time warning each. The host rejects unknown keys before the plugin loads, so this keeps an old configuration valid after the upgrade. The key file is never read. The destructive-action and senses shadow modes are unchanged. The host decision model now supplies the urgency question; keyword-only time pressure requires the existing opt-in heuristic settings.
  • Judge documentation describes the request/answer contract and user-selected local or remote judges. URL path and response-envelope behavior is unchanged. The documentation bundle was regenerated with its generator.

Validation on the host (macOS arm64, Node 26.12.1, Python 3.14, Cargo 1.98.1):

  • Plugin npm test at 63906b0: 152/152 (160 previously: 18 tests removed with the adapter file, 4 generic tests retained, 6 migration/host tests added).
  • Manifest schema at 63906b0, checked with the plugin-config validator of OpenClaw 2026.10.8: 12 sample configurations (current, legacy with each removed option, unknown key, unknown classifier) all give the expected result. At 9bb8b1a the three legacy samples that set jevModel or jevKeyFile were rejected; 63906b0 fixes that.
  • Python python3 python/test_probbit.py at 63906b0: 16/16.
  • Rust cargo test --offline --workspace at 9bb8b1a: 477 passed, 0 failed, 4 ignored (36 test binaries). 63906b0 touches no Rust.
  • Generated-doc check and git diff --check pass at 63906b0.

Known and not changed here: two plugin tests that spawn a stand-in binary under the hook's 500 ms budget ("safety: a binary that refuses the event" and "hook, a binary with --label") can time out on a busy machine. The test file is untouched by this PR. At 63906b0 the first run failed both and the next four consecutive runs were clean; at 9bb8b1a six consecutive runs were clean and two earlier runs each failed one of the two.

Remaining adapter-name references are the removal changelog, the legacy-config migration handling and its tests, and incidental byte matches in unchanged compressed media. Benchmark sources under bench/ and format-provenance attribution are intentionally unchanged; BENCHMARKS.md and REPRODUCE.md now point to bench/agentdojo/README.md for the API route the benchmark used.

The host validates the manifest schema before the plugin loads and rejects
unknown keys. An old configuration that still set jevModel or jevKeyFile
therefore stopped validating, although classifier "jev" and classifierShadow
were already tolerated. Both options stay declared as deprecated no-ops with
one load-time warning each; the key file is never read.

This branch has not been deployed

No deployments
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.

1 participant