12 Commits
Author SHA1 Message Date
daniel156161 39a7a53873 feat(database): store gameplay replays in compact form
Build and Push Docker Container / build-and-push (push) Successful in 3m52s
- Add compact storage package: codec, records, hydrate, replay blobs, cache.
- Running games write game_turns and snake_states keyed by integer ids.
- Encode moves as 1-byte codes and bodies as head plus step codes.
- Store food and hazards only when they changed since the previous turn.
- Strip reasoning fields that duplicate stored values and restore on read.
- Pack finished games into one zstd blob per game in game_replays.
- Merge late turns into packed blobs during the stale-game sweep.
- Extract SQLite and PostgreSQL schemas into dedicated modules.
- Add read/import game bundle and list_game_ids to the backend template.
- Add legacy readers and converter for the old turns/snake_turns layout.
- Add migrate_gameplay_to_compact.py with in-place or cross-DB migration.
- Verify every migrated game and keep legacy rows on failure.
- Support --since, --minimum-quality and guarded --drop-legacy.
- Add just recipe migrate-gameplay-postgres.
- Rewrite merge script to copy game by game via backend bundles.
- Move benchmark state loading into benchmark_states for both backends.
- Update PostgreSQL cleanup script to the new replay tables.
- Drop sqlite-zstd build stages from the Dockerfile.
- Remove old migration scripts, normalized_turn and their tests.
- Add tests for compact storage, schema, legacy migration and PostgreSQL.
- Document the compact layout and migration workflow in the README.
2026-11-05 00:02:56 +01:00
daniel156161 5efab77248 feat!: adopt Python 3.15 and support BattlesnakeArena
- Require Python 3.15 in project metadata, runtime pin, and Docker stages.
- Use lazy imports for database backends and type-only dependencies.
- Defer benchmark dependencies until their code paths are used.
- Rely on deferred annotations and use Path.info for file discovery.
- Accept BattlesnakeArena alongside BattlesnakeEngine on game endpoints.
- Advance quart_common for Python 3.15 and multi-agent validation.
- Add pytest development dependencies and refresh the uv lockfile.
- Test lazy backend loading, import order, and fresh file discovery.
- Document the runtime requirements and locked uv workflow.

BREAKING CHANGE: Python 3.15 or newer is required; earlier runtimes cannot parse the lazy import syntax.
2026-11-03 10:02:40 +01:00
daniel156161 fdc22af4cf fix building of sqlite-zstd with current version to not have a version missmatch error
Build and Push Docker Container / build-and-push (push) Successful in 5m21s
2026-04-06 17:42:53 +02:00
daniel156161 6c34df103e build sqlite-zstd from source to not have a version missmatch of sqlite3
Build and Push Docker Container / build-and-push (push) Successful in 4m14s
2026-04-06 16:49:00 +02:00
daniel156161 fbc7a50f34 install qlite_zstd into docker container to compress gameplay database
Build and Push Docker Container / build-and-push (push) Successful in 1m56s
2026-04-06 16:35:59 +02:00
daniel156161 eb6a054bc9 removed --websocket-ping-interval into docker startup
Build and Push Docker Container / build-and-push (push) Successful in 1m10s
2026-04-04 13:35:02 +02:00
daniel156161 3d7f92e20f use hypercorn in production without uv bload
Build and Push Docker Container / build-and-push (push) Successful in 48s
2026-04-03 14:58:41 +02:00
daniel156161 8ea9cbdcee add uv package manager and use it to build container 2026-01-06 13:35:55 +01:00
daniel156161 ac7c397093 add c to build the module edgedb 2024-05-05 22:50:02 +02:00
daniel156161 cceded8468 add function to overwrite snake config when its set as env and use smaller python alpine container as base 2024-04-17 19:29:18 +02:00
daniel156161 683002343c update docker file 2024-04-01 05:22:35 +02:00
daniel156161 a2f8f5b800 change to new code of battlesnake 2024-04-01 01:41:06 +02:00