Skip to content

feat(competition): expose the champion family as bounded kit data - #577

Open
plind-junior wants to merge 1 commit into
koth-ladderfrom
feat/strategy-config-lane
Open

feat(competition): expose the champion family as bounded kit data#577
plind-junior wants to merge 1 commit into
koth-ladderfrom
feat/strategy-config-lane

Conversation

@plind-junior

Copy link
Copy Markdown
Member

closes the loop the engine lane deliberately leaves open: how does the ladder keep improving ranking without a human in the day-to-day merge path. answer: the reigning champion's decision points become bounded data.

retrieval.strategy_params exposes the champion family's knobs — suspect penalties, the relevance-scaled danger factor, update boosts, the conflict-collapse threshold, per-rule toggles — as a pydantic schema with extra="forbid" and hard bounds on every field (src/vouch/strategies/configured.py). defaults reproduce the promoted champion's constants exactly, verified by a parity test against contrib/strategies/relevance_guard.py across branch-covering candidates. a kit tuning these knobs is pure data, so it rides the existing kit gate: scored on the day's seeds, auto-merged on a dethrone, no human.

the kit validator delegates the strategy_params subtree to the same schema the runtime builds the strategy from — one schema, two callers, so the gate and the engine cannot disagree about what a legal kit is. the subtree fails closed when the schema is unavailable, yaml booleans are refused as numbers (same rule as the existing numeric knobs), and the dotted code hook (retrieval.strategy) stays out of the allowlist: naming code to import is not data.

on the retrieval path, params take precedence over the dotted hook (data before code), an explicit bench strategy still wins over both, and invalid params degrade to "no strategy" — retrieval never fails because a ranking config is bad.

the division of labour docs/koth-ladder.md already promised is now mechanical: a new ranking capability enters as code through the human-reviewed engine lane once; every configuration of it thereafter competes — and merges — as data. verification: full ci gate green locally (pytest, mypy, ruff).

retrieval.strategy_params turns the reigning engine-lane strategy's
decision points into a closed, pydantic-bounded config surface. a kit
can now tune suspect penalties, the danger factor, update boosts, and
collapse thresholds - and auto-merge through the kit gate - because the
score plus the schema bounds cover everything such a submission can do.

the kit validator delegates the subtree to the same schema the runtime
builds the strategy from, so the gate and the engine cannot disagree
about a legal kit. defaults reproduce the promoted champion exactly, so
strategy_params: {} scores identically to the shipped default. the
dotted code hook (retrieval.strategy) stays out of the allowlist -
naming code to import is not data.

new ranking capabilities still enter as code through the human-reviewed
engine lane once; every configuration of them competes - and merges -
as data thereafter.
@coderabbitai

coderabbitai Bot commented Jul 28, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

🗂️ Base branches to auto review (2)
  • test
  • main

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 99e90efe-1bc6-423b-896e-084ca11fef8e

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/strategy-config-lane

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added docs documentation, specs, examples, and repo guidance ci github actions and automation retrieval context, search, synthesis, and evaluation tests tests and fixtures size: L 500-999 changed non-doc lines ci: passing ci is green labels Jul 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci: passing ci is green ci github actions and automation docs documentation, specs, examples, and repo guidance retrieval context, search, synthesis, and evaluation size: L 500-999 changed non-doc lines tests tests and fixtures

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant