Skip to content

Mark default commissioner substatuses#43

Merged
KyleHerndon merged 1 commit into
mainfrom
kyle/default-commissioner-substatuses
Jun 16, 2026
Merged

Mark default commissioner substatuses#43
KyleHerndon merged 1 commit into
mainfrom
kyle/default-commissioner-substatuses

Conversation

@KyleHerndon

@KyleHerndon KyleHerndon commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Summary

  • mark default commissioner competing policies as active when is_champion=true
  • mark default commissioner competing policies as benched when is_champion=false
  • preserve explicit ruleset membership events by only applying default marking to memberships without an explicit event
  • skip membership event writes when the target division, status, and substatus already match the membership

Notes

This keeps substatus assignment commissioner-managed. The platform can pass all competing policies for a round, while default commissioners schedule champions and annotate all competing memberships for UI/API consumers.

Validation

  • uv run pytest tests/test_commissioner_strategies.py -q (58 passed)
  • uv run python -m compileall commissioners tests
  • git diff --check
  • Lint: no configured lint command found in pyproject.toml or CI

Full pytest/websocket runs hang in this local environment after the strategy test phase, so I stopped those and validated the deterministic strategy coverage directly.

Co-authored-by: GPT-5 Codex <codex@openai.com>
@KyleHerndon KyleHerndon force-pushed the kyle/default-commissioner-substatuses branch from 3799258 to 44fc93c Compare June 16, 2026 21:14
@KyleHerndon KyleHerndon merged commit 587ed02 into main Jun 16, 2026
7 checks passed
aaln pushed a commit to Metta-AI/coworld that referenced this pull request Jun 17, 2026
## Summary

- make `is_champion` the platform-owned champion signal and stop deriving or rewriting it from `substatus`
- keep `substatus` commissioner-owned rather than platform/migration-owned
- send all live current-division memberships to round commissioners while keeping the default entrant set limited to `is_champion=true`
- add Coworld commissioner protocol helpers/constants for `competing.active` and `competing.benched`
- update docs and tests for the new platform/commissioner boundary

## Companion PR

Default commissioner marking is handled in the commissioners repo:

- Metta-AI/commissioners#43

That PR marks `is_champion=true` competing memberships as `competing.active`, marks other competing memberships as `competing.benched`, and leaves explicitly configured ruleset membership events in control when present.

## Validation

- `python -m py_compile app_backend/src/metta/app_backend/v2/models.py app_backend/src/metta/app_backend/v2/policy_membership_events.py app_backend/src/metta/app_backend/v2/league_policy_memberships.py app_backend/src/metta/app_backend/v2/pipeline.py app_backend/src/metta/app_backend/v2/routes/league_policy_memberships.py packages/coworld/src/coworld/commissioner/protocol.py packages/coworld/src/coworld/commissioner/__init__.py`
- `git diff --check`

## Local validation notes

- `env METTA_USE_NIX=0 uv run metta pytest app_backend/tests/v2/test_container_commissioner_pipeline_integration.py -q` was attempted with network access, but the local `mettagrid`/Bazel build failed with `No space left on device`.
- Required lint command `env METTA_USE_NIX=0 metta lint` was attempted, but the local `mettagrid`/Bazel build failed after the same disk-constrained environment.
- `uv run alembic -c app_backend/alembic.ini heads` was also blocked locally by the same low-disk environment while building native dependencies.
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