Skip to content

Run qualifier stages through episode complete#26

Open
KyleHerndon wants to merge 6 commits into
mainfrom
kyle/parallel-qualifier-on-episode-complete
Open

Run qualifier stages through episode complete#26
KyleHerndon wants to merge 6 commits into
mainfrom
kyle/parallel-qualifier-on-episode-complete

Conversation

@KyleHerndon

@KyleHerndon KyleHerndon commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add policy membership events to episode_completed_response and emit them from the /round websocket after episode_result/episode_failed
  • schedule all current qualifier stages simultaneously for ruleset strategy staging divisions
  • report qualifier stage progress as n/m stages completed, list completed/pending stages in notes, and promote after all stages complete
  • track effective membership state inside the ruleset commissioner during a round, so later episode-complete decisions use membership events already emitted by that commissioner instead of only the original round_start snapshot
  • keep disqualifying updates terminal through that generic effective-membership state, so a later already-running stage cannot requalify or promote the same round/member
  • extract effective membership folding and qualifier stage progress into ruleset_strategy/round_state.py helpers, including explicit duplicate / failed / progressed / promoted transition kinds, to keep RulesetStrategyCommissioner.on_episode_complete focused on orchestration
  • update Among Them config/tests and terminal-failure regression tests to exercise the real ruleset commissioner path

Validation

  • PASS: .venv/bin/python -m pytest tests/test_commissioner_strategies.py -q (38 passed)
  • PASS: .venv/bin/python -m pytest tests/test_commissioner_strategies.py::test_ruleset_strategy_parallel_qualifier_crash_failure_blocks_later_score_success tests/test_commissioner_strategies.py::test_ruleset_strategy_parallel_qualifier_score_failure_blocks_later_crash_success tests/test_commissioner_strategies.py::test_ruleset_strategy_among_them_config_targets_daily_competition_division tests/test_commissioner_strategies.py::test_ruleset_strategy_among_them_config_first_qualifier_stage_advances_to_score_gate -q (4 passed)
  • PASS: uvx ruff check commissioners/common/protocol.py commissioners/common/server.py commissioners/common/ruleset_strategy/commissioner.py commissioners/common/ruleset_strategy/round_state.py tests/test_commissioner_strategies.py tests/test_commissioner_websocket.py
  • PASS: uvx ruff check commissioners/common/commissioners.py --ignore F401,E402
  • PASS: .venv/bin/python -m compileall -q commissioners tests
  • PASS: git diff --check
  • NOTE: broad local websocket pytest commands did not return a result in this environment; the direct commissioner regression tests cover the terminal-failure ordering logic.

@KyleHerndon KyleHerndon force-pushed the kyle/parallel-qualifier-on-episode-complete branch from e13ece8 to e4f2a36 Compare June 10, 2026 22:56
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