feat: add Zenith strategy and move latency tracing
Build and Push Docker Container / build-and-push (push) Successful in 2m18s

- Register Zenith 1.1 with balanced duel verdicts and forced-outcome overrides.
- Prioritize permanent-trail space in Constrictor and health-aware hazard routes.
- Deduct executor queue delays and return fallback directions on move timeouts.
- Correlate response headers, replay timings, and sampled structured trace logs.
- Move shared metrics publication off the response path without losing local counts.
- Allow configurable tournament opponents and add a psql helper recipe.
- Preserve empty latency values through compact replay encoding and migration.
- Update Arena game links and use default assets for missing customizations.
- Cover strategy, HTTP lifecycle, tracing, replay codecs, and dashboard behavior.
- Validate with 260 passing Python tests, 4 skips, and 2 passing JavaScript tests.
This commit is contained in:
2026-11-05 01:11:31 +01:00
parent 39a7a53873
commit a2414f0b3d
26 changed files with 758 additions and 45 deletions
+3 -2
View File
@@ -12,6 +12,9 @@ SNAKE_REGISTRATIONS = {
"PrismBattleSnake_GPT_5_6_Sol": SnakeRegistration(
"snakes.strategies.prism", "1.5.0"
),
"ZenithBattleSnake_ClaudeOpus5_5": SnakeRegistration(
"snakes.strategies.zenith", "1.1.0"
),
"DummSnake": SnakeRegistration("snakes.legacy.DummSnake", "1.0.0"),
"LogicSnake": SnakeRegistration("snakes.legacy.LogicSnake", "1.1.0"),
"MasterSnake": SnakeRegistration("snakes.legacy.MasterSnake", "1.2.0"),
@@ -42,7 +45,6 @@ DEFAULT_SNAKE_CONFIG = {
"tail": "default",
}
def build_snake(selected_snake: str):
registration = SNAKE_REGISTRATIONS.get(selected_snake)
if registration is None:
@@ -56,7 +58,6 @@ def get_snake_version(selected_snake: str) -> str | None:
registration = SNAKE_REGISTRATIONS.get(selected_snake)
return registration.version if registration is not None else None
class SnakeBuilder:
@classmethod
def build(self, selected_snake: str):