Make hunter the baseline FFA default (legacy becomes the explicit opt-out) - #56
Open
devin-ai-integration[bot] wants to merge 2 commits into
Open
Make hunter the baseline FFA default (legacy becomes the explicit opt-out)#56devin-ai-integration[bot] wants to merge 2 commits into
hunter the baseline FFA default (legacy becomes the explicit opt-out)#56devin-ai-integration[bot] wants to merge 2 commits into
Conversation
Switch unset CTF_BOT_FFA_DOCTRINE and the local FFA demo fallback to hunter while retaining explicit legacy opt-out coverage. Update the policy documentation and doctrine regression tests. Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Contributor
Author
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
Resolve the doctrine-default conflicts with #52's pact arm and per-seat override: ffaDoctrineFor now resolves an unset CTF_BOT_FFA_DOCTRINE to hunter, pact stays opt-in, and the pact-default guard asserts pact rather than legacy. Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Reopens #51 (closed unmerged; same commit, rebased onto current
mainat85159b0). Flips the compiled default of the baseline policy's FFA doctrine fromlegacytohunter— the arm #46 landed behind an env flag now ships on:CTF_BOT_FFA_DOCTRINE=legacyis now the opt-out; every other arm (hybrid,passive,rush,shade,hunter) still selects by name, and no hunter tuning constant, other doctrine, or sim file changes.tools/ci/check_gameversion.sh origin/mainis quiet — GV45 unchanged, no rule change claimed, so replays and fixtures are untouched.Why hunter: it arms itself (bounded, abortable gun trips), fires at real weapon range instead of a flat 120px, pursues only weaker targets while healthy, and starts the endgame at 4 alive. Locally that is +42.3 ± 7.8 score over
passivewith survival up (89s vs 64s) and armed fraction 0.07 → 0.51 (#46). The honest caveat, also from #46: on the hosted field against the current champion it measured +3.8 ± 3.4 pp pairwise across 196 clean episodes — inside noise. So this is defensible as "the bundled bot should fight rather than hide", not as a proven ladder win.What it actually changes in production: the bundled
baselineplayer artifact incoworld_manifest_battleroyale.jsonis built from this source and is what certification, smoke runs and league seat-filling use, and the manifest carries no doctrine override — so the flip reaches the league only on the next Coworld publish, and competitor-submitted policies are unaffected.Tests move with the default rather than being relaxed:
test_baseline_doctrine.nimnow asserts hunter-when-unset and adds a case assertinglegacystill resolves explicitly.tools/run_ffa_demo.sh's unset fallback follows the same default so the demo matches shipped behavior.docs/ENV_VARIATION.mdandplayers/baseline/README.mdare corrected — both previously stated the league baseline stays legacy unless a runner opts in.Verification
Carried over from #51 on the identical tree:
nim c -d:release players/baseline/baseline.nim; startup line for unset (ffaDoctrine=hunter) and each explicit arm, plus invalid-doctrine exit 1;tests/test_baseline_doctrine.nim(4 tests) andtests/test_artlog.nim;tools/ci/check_gameversion.sh origin/main(GV45 unchanged both sides). Runtime: two real 12-player FFA matches from one identical config with bots launched directly, so the compiled default is what was under test — unset gave 12/12ffaDoctrine=hunterbanners, 21 loot trips, hunter-only engage reasons (fire_range192,pursue_weak31) and an elimination ending; explicitlegacygave 0 loot trips and 0 hunter engage reasons.Link to Devin session: https://app.devin.ai/sessions/274a6b4a46034710a7a81a2a81dc02dc
Requested by: @aaln