Skip to content

Pass exclude_rules through the plugin-facing prover runner - #236

Open
shellygr wants to merge 1 commit into
masterfrom
shelly/timeout-resolver-runner-fix
Open

shellygr wants to merge 1 commit into
masterfrom
shelly/timeout-resolver-runner-fix

Conversation

@shellygr

@shellygr shellygr commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

WrappedProverRunner.run is the ProverRunner a plugin receives through CVLAuthorState. It called setup_prover_config_in without exclude_rule, a required keyword-only argument, so every plugin prover call raised TypeError: setup_prover_config_in() missing 1 required keyword-only argument: 'exclude_rule' before it staged anything. The dz-strategy plugin's lemma_prover tool is the caller that hit this.

The runner and the ProverRunner protocol now take exclude_rules next to rules, the way verify_spec scopes its own runs, and pass it through. tests/test_wrapped_prover_runner.py drives the runner against a mocked run_prover: all four cases fail on master with the error above and pass with this change. Pyright reports no errors.

WrappedProverRunner.run is the ProverRunner a plugin gets through
CVLAuthorState. setup_prover_config_in requires exclude_rule, so every
plugin prover call raised a TypeError before anything was staged. The
runner and the ProverRunner protocol now take exclude_rules next to
rules, the way verify_spec scopes its own runs, and a unit test drives
the runner against a mocked run_prover.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CMrKc9bciyU9yKag4wH4Ev
callbacks: ProverCallbacks,
tool_call_id: str,
rules: list[str] | None = None,
exclude_rules: list[str] | None = None,

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.

I was going to ask why the typechecker didn't help us here. Answer: **config means that the typechecker just sort of assumes that any required kwargs that aren't provided explicitly come through that **config. that's disappointing and the only way to fix it is to change the calling convention which is a "whole thing".

sigh. Alright then.

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.

2 participants