ec546c4e96c2d90cb99db6fb84721a8d458dba47
Codex and other coding subagents have been creating branches like experiments/foo and feature/bar without being asked. This fragments review, hides work from the user, and requires manual cleanup. The project intentionally develops on main with frequent small commits. AGENTS.md adds an explicit "Git Branching Policy" section: no checkout -b, switch -c, branch <name>, or PR-from-new-branch unless the user asks for it in the current task. Includes a pass-through clause so this propagates to subagents the main agent spawns. CLAUDE.md adds a one-line pointer with the same pass-through note, since CLAUDE.md mandates AGENTS.md is read at session start. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
coolrl-lost-cities
Focused Lost Cities extraction from the legacy coolrl repository.
The current implementation starts with the classic two-player card game:
- classic 5-expedition rules by default
- Python/Cython game engine
- env wrapper
- random, passive-discard, and safe-heuristic bots
- core rule, scoring, mask, env, canonical-state, bot, and GUI smoke tests
Training code, Deep CFR, learned-policy evaluation, GUI, and web client are intentionally outside the first port.
Development
uv run pytest tests/games/classic
uv run lost-cities-classic
For future GUI work, install the optional GUI dependencies:
uv sync --extra gui
Run the classic pygame GUI:
uv run lost-cities-classic-gui --mode pvc --bot safe-heuristic
The GUI uses the in-process Cython game engine.
Basic Usage
from coolrl_lost_cities.games.classic import GameState, build_bot, classic_config
state = GameState.new_game(classic_config(seed=1))
bot = build_bot("random", seed=1)
while not state.terminal:
state.apply_action(bot.act(state))
print(state.total_score(0), state.total_score(1))
See classic port notes for the current direction.
Languages
Python
73.3%
Cython
21.7%
Julia
4.8%
Shell
0.2%