eslams-core 0.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- eslams_core-0.4.0/.github/workflows/ci.yml +27 -0
- eslams_core-0.4.0/.gitignore +11 -0
- eslams_core-0.4.0/CHANGELOG.md +202 -0
- eslams_core-0.4.0/CONTRIBUTING.md +32 -0
- eslams_core-0.4.0/LICENSE +21 -0
- eslams_core-0.4.0/PKG-INFO +820 -0
- eslams_core-0.4.0/README.md +766 -0
- eslams_core-0.4.0/SECURITY.md +15 -0
- eslams_core-0.4.0/changes_to_core.md +1277 -0
- eslams_core-0.4.0/docs/ARENAS.md +116 -0
- eslams_core-0.4.0/docs/ARTIFACTS.md +156 -0
- eslams_core-0.4.0/docs/PLATFORM_CONTRACTS.md +514 -0
- eslams_core-0.4.0/docs/PROTOCOL.md +68 -0
- eslams_core-0.4.0/docs/REGISTRY_AVAILABLE_MODELS.md +1711 -0
- eslams_core-0.4.0/eslams changes plan.md +843 -0
- eslams_core-0.4.0/examples/random_agent.py +16 -0
- eslams_core-0.4.0/fixtures/arena_sessions/golden_v0_3.json +85 -0
- eslams_core-0.4.0/fixtures/artifacts/local_tic_tac_toe.eslams +0 -0
- eslams_core-0.4.0/fixtures/artifacts/official_signed.eslams +0 -0
- eslams_core-0.4.0/fixtures/artifacts/official_unsigned.eslams +0 -0
- eslams_core-0.4.0/fixtures/artifacts/uploaded_replay_minimal.eslams +0 -0
- eslams_core-0.4.0/fixtures/core/golden_v0_4.json +56 -0
- eslams_core-0.4.0/fixtures/provider/mock_gateway_auth_failed.json +14 -0
- eslams_core-0.4.0/fixtures/provider/mock_missing_usage.json +14 -0
- eslams_core-0.4.0/fixtures/provider/mock_parse_error.json +20 -0
- eslams_core-0.4.0/fixtures/provider/mock_provider_error.json +14 -0
- eslams_core-0.4.0/fixtures/provider/mock_success.json +20 -0
- eslams_core-0.4.0/fixtures/provider/mock_timeout.json +14 -0
- eslams_core-0.4.0/fixtures/publication/battlefield_sample_bundle/aggregate_usage.json +1 -0
- eslams_core-0.4.0/fixtures/publication/battlefield_sample_bundle/bundle_manifest.json +1 -0
- eslams_core-0.4.0/fixtures/publication/battlefield_sample_bundle/checkpoint_manifest.json +1 -0
- eslams_core-0.4.0/fixtures/publication/battlefield_sample_bundle/leaderboard_rows.jsonl +1 -0
- eslams_core-0.4.0/fixtures/publication/battlefield_sample_bundle/object_manifest.json +1 -0
- eslams_core-0.4.0/fixtures/publication/battlefield_sample_bundle/proof_index.jsonl +1 -0
- eslams_core-0.4.0/fixtures/publication/battlefield_sample_bundle/provider_model_rows.jsonl +0 -0
- eslams_core-0.4.0/fixtures/publication/battlefield_sample_bundle/public_manifest.jsonl +1 -0
- eslams_core-0.4.0/fixtures/publication/battlefield_sample_bundle/public_replays/00000_local_tic_tac_toe/manifest.json +1 -0
- eslams_core-0.4.0/fixtures/publication/battlefield_sample_bundle/public_replays/00000_local_tic_tac_toe/public/public_manifest.json +1 -0
- eslams_core-0.4.0/fixtures/publication/battlefield_sample_bundle/public_replays/00000_local_tic_tac_toe/public/public_result_summary.json +1 -0
- eslams_core-0.4.0/fixtures/publication/battlefield_sample_bundle/public_replays/00000_local_tic_tac_toe/public_reasoning/reasoning.jsonl +5 -0
- eslams_core-0.4.0/fixtures/publication/battlefield_sample_bundle/public_replays/00000_local_tic_tac_toe/replay/display_frames.jsonl +6 -0
- eslams_core-0.4.0/fixtures/publication/battlefield_sample_bundle/public_replays/00000_local_tic_tac_toe/replay/replay_events.jsonl +6 -0
- eslams_core-0.4.0/fixtures/publication/battlefield_sample_bundle/public_replays/00000_local_tic_tac_toe/replay/replay_manifest.json +1 -0
- eslams_core-0.4.0/fixtures/publication/battlefield_sample_bundle/signature_readback_manifest.json +1 -0
- eslams_core-0.4.0/fixtures/publication/official_plan.json +40 -0
- eslams_core-0.4.0/fixtures/replay/public_tic_tac_toe.jsonl +2 -0
- eslams_core-0.4.0/packages/core-contracts/package.json +9 -0
- eslams_core-0.4.0/packages/core-contracts/src/generated/actions.ts +41 -0
- eslams_core-0.4.0/packages/core-contracts/src/generated/core-step.ts +79 -0
- eslams_core-0.4.0/packages/core-contracts/src/generated/index.ts +4 -0
- eslams_core-0.4.0/packages/core-contracts/src/generated/prompt.ts +21 -0
- eslams_core-0.4.0/packages/core-contracts/src/generated/replay.ts +22 -0
- eslams_core-0.4.0/packages/core-lite/package.json +12 -0
- eslams_core-0.4.0/packages/core-lite/src/index.ts +351 -0
- eslams_core-0.4.0/pyproject.toml +69 -0
- eslams_core-0.4.0/sample_runs/README.md +29 -0
- eslams_core-0.4.0/sample_runs/model_battle_sample/README.md +29 -0
- eslams_core-0.4.0/sample_runs/model_battle_sample/plan.json +40 -0
- eslams_core-0.4.0/sample_runs/model_battle_sample/publication_bundle/aggregate_usage.json +1 -0
- eslams_core-0.4.0/sample_runs/model_battle_sample/publication_bundle/bundle_manifest.json +1 -0
- eslams_core-0.4.0/sample_runs/model_battle_sample/publication_bundle/checkpoint_manifest.json +1 -0
- eslams_core-0.4.0/sample_runs/model_battle_sample/publication_bundle/leaderboard_rows.jsonl +1 -0
- eslams_core-0.4.0/sample_runs/model_battle_sample/publication_bundle/object_manifest.json +1 -0
- eslams_core-0.4.0/sample_runs/model_battle_sample/publication_bundle/proof_index.jsonl +1 -0
- eslams_core-0.4.0/sample_runs/model_battle_sample/publication_bundle/provider_model_rows.jsonl +0 -0
- eslams_core-0.4.0/sample_runs/model_battle_sample/publication_bundle/public_manifest.jsonl +1 -0
- eslams_core-0.4.0/sample_runs/model_battle_sample/publication_bundle/public_replays/00000_run_eeab67d58b994ca7/manifest.json +1 -0
- eslams_core-0.4.0/sample_runs/model_battle_sample/publication_bundle/public_replays/00000_run_eeab67d58b994ca7/public/public_manifest.json +1 -0
- eslams_core-0.4.0/sample_runs/model_battle_sample/publication_bundle/public_replays/00000_run_eeab67d58b994ca7/public/public_result_summary.json +1 -0
- eslams_core-0.4.0/sample_runs/model_battle_sample/publication_bundle/public_replays/00000_run_eeab67d58b994ca7/public_reasoning/reasoning.jsonl +8 -0
- eslams_core-0.4.0/sample_runs/model_battle_sample/publication_bundle/public_replays/00000_run_eeab67d58b994ca7/replay/display_frames.jsonl +9 -0
- eslams_core-0.4.0/sample_runs/model_battle_sample/publication_bundle/public_replays/00000_run_eeab67d58b994ca7/replay/replay_events.jsonl +9 -0
- eslams_core-0.4.0/sample_runs/model_battle_sample/publication_bundle/public_replays/00000_run_eeab67d58b994ca7/replay/replay_manifest.json +1 -0
- eslams_core-0.4.0/sample_runs/model_battle_sample/publication_bundle/signature_readback_manifest.json +1 -0
- eslams_core-0.4.0/sample_runs/model_battle_sample/run_eeab67d58b994ca7.eslams +0 -0
- eslams_core-0.4.0/sample_runs/model_eval_sample/README.md +31 -0
- eslams_core-0.4.0/sample_runs/model_eval_sample/official_signed.eslams +0 -0
- eslams_core-0.4.0/sample_runs/model_eval_sample/plan.json +40 -0
- eslams_core-0.4.0/sample_runs/model_eval_sample/publication_bundle/aggregate_usage.json +1 -0
- eslams_core-0.4.0/sample_runs/model_eval_sample/publication_bundle/bundle_manifest.json +1 -0
- eslams_core-0.4.0/sample_runs/model_eval_sample/publication_bundle/checkpoint_manifest.json +1 -0
- eslams_core-0.4.0/sample_runs/model_eval_sample/publication_bundle/leaderboard_rows.jsonl +1 -0
- eslams_core-0.4.0/sample_runs/model_eval_sample/publication_bundle/object_manifest.json +1 -0
- eslams_core-0.4.0/sample_runs/model_eval_sample/publication_bundle/proof_index.jsonl +1 -0
- eslams_core-0.4.0/sample_runs/model_eval_sample/publication_bundle/provider_model_rows.jsonl +0 -0
- eslams_core-0.4.0/sample_runs/model_eval_sample/publication_bundle/public_manifest.jsonl +1 -0
- eslams_core-0.4.0/sample_runs/model_eval_sample/publication_bundle/public_replays/00000_official_signed/manifest.json +1 -0
- eslams_core-0.4.0/sample_runs/model_eval_sample/publication_bundle/public_replays/00000_official_signed/public/public_manifest.json +1 -0
- eslams_core-0.4.0/sample_runs/model_eval_sample/publication_bundle/public_replays/00000_official_signed/public/public_result_summary.json +1 -0
- eslams_core-0.4.0/sample_runs/model_eval_sample/publication_bundle/public_replays/00000_official_signed/public_reasoning/reasoning.jsonl +5 -0
- eslams_core-0.4.0/sample_runs/model_eval_sample/publication_bundle/public_replays/00000_official_signed/replay/display_frames.jsonl +6 -0
- eslams_core-0.4.0/sample_runs/model_eval_sample/publication_bundle/public_replays/00000_official_signed/replay/replay_events.jsonl +6 -0
- eslams_core-0.4.0/sample_runs/model_eval_sample/publication_bundle/public_replays/00000_official_signed/replay/replay_manifest.json +1 -0
- eslams_core-0.4.0/sample_runs/model_eval_sample/publication_bundle/signature_readback_manifest.json +1 -0
- eslams_core-0.4.0/scripts/update_provider_registry.py +334 -0
- eslams_core-0.4.0/src/eslams/__init__.py +52 -0
- eslams_core-0.4.0/src/eslams/action_descriptors.py +404 -0
- eslams_core-0.4.0/src/eslams/agent/__init__.py +5 -0
- eslams_core-0.4.0/src/eslams/agent/server.py +54 -0
- eslams_core-0.4.0/src/eslams/agents.py +979 -0
- eslams_core-0.4.0/src/eslams/arena.py +72 -0
- eslams_core-0.4.0/src/eslams/arena_transport.py +842 -0
- eslams_core-0.4.0/src/eslams/arenas/__init__.py +163 -0
- eslams_core-0.4.0/src/eslams/arenas/advanced_cards.py +927 -0
- eslams_core-0.4.0/src/eslams/arenas/backgammon.py +279 -0
- eslams_core-0.4.0/src/eslams/arenas/battleship.py +163 -0
- eslams_core-0.4.0/src/eslams/arenas/checkers.py +270 -0
- eslams_core-0.4.0/src/eslams/arenas/chess.py +240 -0
- eslams_core-0.4.0/src/eslams/arenas/classic_cards.py +577 -0
- eslams_core-0.4.0/src/eslams/arenas/connect_four.py +121 -0
- eslams_core-0.4.0/src/eslams/arenas/control_arcade.py +911 -0
- eslams_core-0.4.0/src/eslams/arenas/east_asian_board.py +952 -0
- eslams_core-0.4.0/src/eslams/arenas/gomoku.py +154 -0
- eslams_core-0.4.0/src/eslams/arenas/gridworld.py +371 -0
- eslams_core-0.4.0/src/eslams/arenas/hex.py +163 -0
- eslams_core-0.4.0/src/eslams/arenas/mancala.py +182 -0
- eslams_core-0.4.0/src/eslams/arenas/matrix_games.py +241 -0
- eslams_core-0.4.0/src/eslams/arenas/modern_control.py +532 -0
- eslams_core-0.4.0/src/eslams/arenas/nine_mens_morris.py +271 -0
- eslams_core-0.4.0/src/eslams/arenas/othello.py +213 -0
- eslams_core-0.4.0/src/eslams/arenas/pentago.py +175 -0
- eslams_core-0.4.0/src/eslams/arenas/poker.py +498 -0
- eslams_core-0.4.0/src/eslams/arenas/strategic_games.py +836 -0
- eslams_core-0.4.0/src/eslams/arenas/tic_tac_toe.py +100 -0
- eslams_core-0.4.0/src/eslams/arenas/tile_card_games.py +760 -0
- eslams_core-0.4.0/src/eslams/arenas/ultimate_tic_tac_toe.py +201 -0
- eslams_core-0.4.0/src/eslams/artifacts.py +1825 -0
- eslams_core-0.4.0/src/eslams/bench.py +161 -0
- eslams_core-0.4.0/src/eslams/catalogue.py +179 -0
- eslams_core-0.4.0/src/eslams/cli.py +977 -0
- eslams_core-0.4.0/src/eslams/contracts/__init__.py +85 -0
- eslams_core-0.4.0/src/eslams/contracts/artifact.py +238 -0
- eslams_core-0.4.0/src/eslams/contracts/catalogue.py +118 -0
- eslams_core-0.4.0/src/eslams/contracts/eval_plan.py +113 -0
- eslams_core-0.4.0/src/eslams/contracts/json_schema.py +920 -0
- eslams_core-0.4.0/src/eslams/contracts/provider.py +127 -0
- eslams_core-0.4.0/src/eslams/contracts/publication.py +76 -0
- eslams_core-0.4.0/src/eslams/contracts/replay.py +160 -0
- eslams_core-0.4.0/src/eslams/contracts/runner_job.py +187 -0
- eslams_core-0.4.0/src/eslams/contracts/safety.py +74 -0
- eslams_core-0.4.0/src/eslams/contracts/security.py +157 -0
- eslams_core-0.4.0/src/eslams/contracts/versions.py +79 -0
- eslams_core-0.4.0/src/eslams/core_contract.py +680 -0
- eslams_core-0.4.0/src/eslams/eval_runtime.py +170 -0
- eslams_core-0.4.0/src/eslams/events.py +145 -0
- eslams_core-0.4.0/src/eslams/fixtures.py +102 -0
- eslams_core-0.4.0/src/eslams/golden.py +80 -0
- eslams_core-0.4.0/src/eslams/hashing.py +73 -0
- eslams_core-0.4.0/src/eslams/model_actions.py +215 -0
- eslams_core-0.4.0/src/eslams/observation_budgets.py +72 -0
- eslams_core-0.4.0/src/eslams/official.py +119 -0
- eslams_core-0.4.0/src/eslams/planning.py +155 -0
- eslams_core-0.4.0/src/eslams/policy.py +50 -0
- eslams_core-0.4.0/src/eslams/protocol.py +240 -0
- eslams_core-0.4.0/src/eslams/provider_preflight.py +64 -0
- eslams_core-0.4.0/src/eslams/providers/__init__.py +6 -0
- eslams_core-0.4.0/src/eslams/providers/anthropic.py +5 -0
- eslams_core-0.4.0/src/eslams/providers/capabilities.py +350 -0
- eslams_core-0.4.0/src/eslams/providers/data/models.generated.json +220111 -0
- eslams_core-0.4.0/src/eslams/providers/data/overrides.json +54 -0
- eslams_core-0.4.0/src/eslams/providers/google.py +5 -0
- eslams_core-0.4.0/src/eslams/providers/openai.py +5 -0
- eslams_core-0.4.0/src/eslams/providers/registry.py +225 -0
- eslams_core-0.4.0/src/eslams/public_catalogue.py +267 -0
- eslams_core-0.4.0/src/eslams/public_replay.py +241 -0
- eslams_core-0.4.0/src/eslams/publication_export.py +470 -0
- eslams_core-0.4.0/src/eslams/rendering.py +137 -0
- eslams_core-0.4.0/src/eslams/replay.py +633 -0
- eslams_core-0.4.0/src/eslams/replay_projection.py +171 -0
- eslams_core-0.4.0/src/eslams/runner.py +817 -0
- eslams_core-0.4.0/src/eslams/runner_health.py +70 -0
- eslams_core-0.4.0/src/eslams/runner_result.py +58 -0
- eslams_core-0.4.0/src/eslams/runner_server.py +107 -0
- eslams_core-0.4.0/src/eslams/runner_session.py +142 -0
- eslams_core-0.4.0/src/eslams/state.py +93 -0
- eslams_core-0.4.0/src/eslams_core/__init__.py +3 -0
- eslams_core-0.4.0/src/eslams_core/bench.py +8 -0
- eslams_core-0.4.0/tests/test_advanced_card_arenas.py +141 -0
- eslams_core-0.4.0/tests/test_arena_transport.py +305 -0
- eslams_core-0.4.0/tests/test_board_arenas.py +67 -0
- eslams_core-0.4.0/tests/test_catalogue_and_planning.py +286 -0
- eslams_core-0.4.0/tests/test_chess_observation.py +75 -0
- eslams_core-0.4.0/tests/test_classic_card_arenas.py +121 -0
- eslams_core-0.4.0/tests/test_contract_artifact_profiles.py +482 -0
- eslams_core-0.4.0/tests/test_control_arcade_arenas.py +146 -0
- eslams_core-0.4.0/tests/test_core_contract_v04.py +203 -0
- eslams_core-0.4.0/tests/test_environment_arenas.py +93 -0
- eslams_core-0.4.0/tests/test_expanded_arenas.py +134 -0
- eslams_core-0.4.0/tests/test_final_catalog_arenas.py +134 -0
- eslams_core-0.4.0/tests/test_fixtures.py +116 -0
- eslams_core-0.4.0/tests/test_model_agents.py +476 -0
- eslams_core-0.4.0/tests/test_modern_control_and_backgammon.py +150 -0
- eslams_core-0.4.0/tests/test_official_merge.py +35 -0
- eslams_core-0.4.0/tests/test_poker_and_morris_arenas.py +114 -0
- eslams_core-0.4.0/tests/test_protocol.py +27 -0
- eslams_core-0.4.0/tests/test_provider_registry.py +104 -0
- eslams_core-0.4.0/tests/test_publication_export.py +130 -0
- eslams_core-0.4.0/tests/test_runner_artifact.py +621 -0
- eslams_core-0.4.0/tests/test_runner_contracts.py +190 -0
- eslams_core-0.4.0/tests/test_state.py +30 -0
- eslams_core-0.4.0/tests/test_strategic_arenas.py +102 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
name: Core CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
test:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- uses: actions/checkout@v4
|
|
13
|
+
- uses: actions/setup-python@v5
|
|
14
|
+
with:
|
|
15
|
+
python-version: "3.12"
|
|
16
|
+
- name: Install
|
|
17
|
+
run: python -m pip install -e ".[dev]"
|
|
18
|
+
- name: Test
|
|
19
|
+
run: pytest
|
|
20
|
+
- name: Schema export smoke
|
|
21
|
+
run: eslams schemas export --out /tmp/eslams-schemas
|
|
22
|
+
- name: Core benchmark smoke
|
|
23
|
+
run: python -m eslams_core.bench arena-step --games tic-tac-toe --iterations 10 --json /tmp/core-step-bench.json
|
|
24
|
+
- name: Ruff
|
|
25
|
+
run: ruff check .
|
|
26
|
+
- name: Mypy
|
|
27
|
+
run: mypy src
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## v0.4.0 - 2026-06-11
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- Added Core step contract v2 with deterministic `coreStep` request/response
|
|
8
|
+
semantics, canonical state/action/legal-action/observation hashes, compact
|
|
9
|
+
legal-action views, replay events, terminal summaries, and per-stage timings.
|
|
10
|
+
- Added compact observation and prompt package generation with stable prefix
|
|
11
|
+
blocks, per-turn dynamic blocks, action output JSON schemas, prompt hashes,
|
|
12
|
+
and approximate token estimates.
|
|
13
|
+
- Added shared model-action parsing with invalid-action taxonomy, corrective
|
|
14
|
+
retry prompts, `action_id` support, and streaming `action_ready` detection.
|
|
15
|
+
- Added persistent runner-session support with hot in-memory state,
|
|
16
|
+
create/step/snapshot/ping/close APIs, and FastAPI route wiring for runner
|
|
17
|
+
containers.
|
|
18
|
+
- Added `python -m eslams_core.bench arena-step ...` and `eslams bench
|
|
19
|
+
arena-step` benchmark harnesses for Core step timings and payload sizes.
|
|
20
|
+
- Added observation budget reports, golden Core fixture generation, engine
|
|
21
|
+
capability metadata, and speculative-precompute eligibility metadata.
|
|
22
|
+
- Added production-fail-closed seed derivation and runner request signing
|
|
23
|
+
helpers.
|
|
24
|
+
- Added Platform TypeScript contract artifacts under `packages/core-contracts`
|
|
25
|
+
and a gated `@eslams/core-lite` TypeScript package for tic-tac-toe and
|
|
26
|
+
connect-four parity work.
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
|
|
30
|
+
- Bumped Core package/version metadata to `0.4.0`, runner defaults to
|
|
31
|
+
`eslams-runner:0.4.0`, and schema bundle metadata to
|
|
32
|
+
`eslams-schema-bundle-v2`.
|
|
33
|
+
- Extended schema export with Core step request/response, prompt package,
|
|
34
|
+
replay event, runner-session, and observability schemas.
|
|
35
|
+
- Enriched runner health output with warm status, loaded game count, and
|
|
36
|
+
uptime while preserving existing hash fields.
|
|
37
|
+
|
|
38
|
+
### Validation
|
|
39
|
+
|
|
40
|
+
- Added v0.4.0 tests for Core step v2, prompt packages, shared model-action
|
|
41
|
+
parsing, runner sessions, seed/signing security, budgets, golden fixtures,
|
|
42
|
+
schema export, generated contract artifacts, and engine capability gates.
|
|
43
|
+
|
|
44
|
+
## v0.3.2 - 2026-06-10
|
|
45
|
+
|
|
46
|
+
### Security
|
|
47
|
+
|
|
48
|
+
- Replaced runner artifact HMAC signatures with Ed25519 signature v2 for
|
|
49
|
+
official-publication trust. Legacy HMAC signatures remain readable as
|
|
50
|
+
`legacy_hmac` history, but they no longer satisfy official bundle validation.
|
|
51
|
+
- Added in-process agent timeout enforcement so local agents cannot exceed
|
|
52
|
+
`time_budget_ms` without a timeout marker.
|
|
53
|
+
|
|
54
|
+
### Fixed
|
|
55
|
+
|
|
56
|
+
- Preserved `max_turns=0` as an explicit zero-turn run instead of falling back
|
|
57
|
+
to arena defaults.
|
|
58
|
+
- Fixed primary scores to track the evaluated player (`player_1`) rather than
|
|
59
|
+
the highest seat score.
|
|
60
|
+
- Fixed multi-player forfeit scoring so remaining seats keep their scores and
|
|
61
|
+
the forfeiting seat is isolated.
|
|
62
|
+
|
|
63
|
+
### Changed
|
|
64
|
+
|
|
65
|
+
- Bumped Core package/version metadata to `0.3.2` and runner defaults to
|
|
66
|
+
`eslams-runner:0.3.2`.
|
|
67
|
+
- Added GitHub Actions CI for pytest, Ruff, and mypy.
|
|
68
|
+
|
|
69
|
+
## v0.3.1 - 2026-06-10
|
|
70
|
+
|
|
71
|
+
### Security
|
|
72
|
+
|
|
73
|
+
- Hardened `.eslams` archive validation against zip path traversal and
|
|
74
|
+
concurrent validation races by validating every archive member before
|
|
75
|
+
extracting into a unique temporary directory.
|
|
76
|
+
|
|
77
|
+
### Fixed
|
|
78
|
+
|
|
79
|
+
- Logged Arena transition exceptions while keeping public transport failures
|
|
80
|
+
generic.
|
|
81
|
+
- Fixed Checkers multi-jump continuation, including forced-piece legal actions.
|
|
82
|
+
- Rejected missing explicit agents for arenas with more than two players.
|
|
83
|
+
- Preserved literal edge backticks when parsing fenced JSON model responses.
|
|
84
|
+
- Guarded malformed Backgammon move parsing and corrupt public replay JSONL rows.
|
|
85
|
+
- Made catalogue export skip and warn on missing metadata rows instead of
|
|
86
|
+
crashing.
|
|
87
|
+
- Generated replay HTML player panels from replay data instead of hardcoding two
|
|
88
|
+
player IDs.
|
|
89
|
+
|
|
90
|
+
### Changed
|
|
91
|
+
|
|
92
|
+
- Bumped Core package/version metadata to `0.3.1` and runner defaults to
|
|
93
|
+
`eslams-runner:0.3.1`.
|
|
94
|
+
|
|
95
|
+
## v0.3.0 - 2026-06-09
|
|
96
|
+
|
|
97
|
+
### Added
|
|
98
|
+
|
|
99
|
+
- Added lightweight live Arena session APIs:
|
|
100
|
+
`start_session`, `step_session`, and `legal_actions_page`.
|
|
101
|
+
- Added public JSON schemas for Arena start results, step results, legal-action
|
|
102
|
+
pages, action descriptors, and live Arena events.
|
|
103
|
+
- Added CLI commands for live Arena transport:
|
|
104
|
+
`eslams arena start`, `eslams arena step`, and
|
|
105
|
+
`eslams arena legal-actions-page`.
|
|
106
|
+
- Added public-safe legal action descriptors for all 50 registered games,
|
|
107
|
+
including stable action tokens, labels, groups, categories, prompt labels,
|
|
108
|
+
and deterministic sort keys.
|
|
109
|
+
- Added canonical live `display_frame` projection using the same display-frame
|
|
110
|
+
shape as public replay packages.
|
|
111
|
+
- Added public-safe live Arena events for session start, action acceptance,
|
|
112
|
+
state application, model-turn requests, human-turn readiness, completion, and
|
|
113
|
+
failure cases.
|
|
114
|
+
- Added paged/searchable legal-action descriptor output for large action sets.
|
|
115
|
+
- Added all-50 Arena start/step contract tests, public-safety checks, paging
|
|
116
|
+
tests, failure tests, CLI tests, timing assertions, and representative golden
|
|
117
|
+
fixtures.
|
|
118
|
+
|
|
119
|
+
### Changed
|
|
120
|
+
|
|
121
|
+
- Bumped Core package/version metadata to `0.3.0` and runner defaults to
|
|
122
|
+
`eslams-runner:0.3.0`.
|
|
123
|
+
- Documented the v0.3.0 Arena transport contract, server-owned
|
|
124
|
+
`session_state` boundary, browser-safe fields, and release/tag instructions.
|
|
125
|
+
- Narrowed public safety scanning so action descriptor `token` and
|
|
126
|
+
`prompt_label` are allowed only inside action descriptor rows.
|
|
127
|
+
|
|
128
|
+
### Validation
|
|
129
|
+
|
|
130
|
+
- `python3 -m pytest -q`
|
|
131
|
+
- `python3 -m ruff check .`
|
|
132
|
+
- `python3 -m mypy src`
|
|
133
|
+
|
|
134
|
+
## v0.2.0 - 2026-06-09
|
|
135
|
+
|
|
136
|
+
### Added
|
|
137
|
+
|
|
138
|
+
- Added a versioned `eslams.contracts` package with deterministic schema export
|
|
139
|
+
for artifact manifests, validation summaries, replay events/manifests,
|
|
140
|
+
provider receipts, eval plans, progress events, resume checkpoints, official
|
|
141
|
+
results, publication bundles, runner jobs, and catalogue rows.
|
|
142
|
+
- Added deterministic `schema_bundle_manifest.json` output for
|
|
143
|
+
`eslams schemas export`, including Core package version, git commit when
|
|
144
|
+
available, schema bundle version, schema hashes, and deterministic build id.
|
|
145
|
+
- Added schema coverage for catalogue renderer rows, catalogue availability
|
|
146
|
+
rows, schema bundle manifests, and public display-frame rows.
|
|
147
|
+
- Added artifact validation profiles for runner bundles, official bundles,
|
|
148
|
+
Battlefield bundles, and public replay packages, with no-secret JSON summaries.
|
|
149
|
+
- Added public replay exports with actor metadata, participant metadata, state
|
|
150
|
+
hash status, replay completeness counters, public reasoning rows, and recursive
|
|
151
|
+
public-output safety scanning.
|
|
152
|
+
- Added `replay/display_frames.jsonl` public-safe projections and optional-file
|
|
153
|
+
manifest rows for public replay packages.
|
|
154
|
+
- Added `eslams runner result --artifact --artifact-uri --job-id` and
|
|
155
|
+
`eslams run --runner-result-json --artifact-uri` for canonical
|
|
156
|
+
`RunnerJobResult` emission.
|
|
157
|
+
- Added provider runtime controls for timeout, connect/read timeout, retries,
|
|
158
|
+
retry backoff, synchronous concurrency limits, rate limits, generic gateway
|
|
159
|
+
base URLs, and normalized redacted provider receipts for success and failure.
|
|
160
|
+
- Added provider-backed HTTP-agent status semantics:
|
|
161
|
+
`provider_ok`, `provider_receipt_missing`, `provider_usage_unavailable`,
|
|
162
|
+
`local_agent`, and `agent_error`.
|
|
163
|
+
- Added model and game catalogue exports with official eval, Battlefield, and
|
|
164
|
+
Arena eligibility, explicit absence reasons, and all-50 renderer vocabulary
|
|
165
|
+
metadata.
|
|
166
|
+
- Added Platform-aligned public game identity fields, category labels, variants,
|
|
167
|
+
difficulty, maturity, player counts, and model provider-control capability
|
|
168
|
+
metadata.
|
|
169
|
+
- Added deterministic official, Battlefield, and public-match planning helpers
|
|
170
|
+
with shard partitioning, resume checkpoint checks, and JSONL progress events.
|
|
171
|
+
- Added runner/container contracts, runner health output, and stateless Arena
|
|
172
|
+
transport helpers for all registered games.
|
|
173
|
+
- Added trusted interactive state rehydration with strict hash validation by
|
|
174
|
+
default and non-strict repair diagnostics for server-owned interactive state.
|
|
175
|
+
- Added publication bundle export and validation for uploaded replay,
|
|
176
|
+
Battlefield sample, and official proof workflows without storage/database
|
|
177
|
+
dependencies.
|
|
178
|
+
- Added deterministic fixtures for artifacts, provider receipt scenarios, public
|
|
179
|
+
replay JSONL, official plans, and a Battlefield sample publication bundle.
|
|
180
|
+
|
|
181
|
+
### Changed
|
|
182
|
+
|
|
183
|
+
- Extended runner artifacts additively with public sidecars, validation summaries,
|
|
184
|
+
official result sidecars, metadata-only broadcast manifests, provider usage
|
|
185
|
+
aggregation, and scoring safety fields.
|
|
186
|
+
- Split validity and eligibility fields across artifacts, public summaries,
|
|
187
|
+
official result merges, and publication bundles so evidence rows do not imply
|
|
188
|
+
ranked leaderboard eligibility.
|
|
189
|
+
- Kept `.eslams` artifacts zip-compatible and backward-compatible while adding
|
|
190
|
+
Platform-facing public contracts.
|
|
191
|
+
- Updated docs for Platform contracts, artifact profiles, public replay packages,
|
|
192
|
+
provider runtime behavior, catalogue commands, publication bundles, and
|
|
193
|
+
release/tag instructions for `v0.2.0`.
|
|
194
|
+
|
|
195
|
+
### Validation
|
|
196
|
+
|
|
197
|
+
- `python3 -m pytest -q`
|
|
198
|
+
- `python3 -m ruff check .`
|
|
199
|
+
- `python3 -m mypy src`
|
|
200
|
+
- Deterministic schema export comparison
|
|
201
|
+
- Publication bundle validation
|
|
202
|
+
- Legacy `run` -> `validate` -> `replay` CLI smoke
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
Thank you for helping build eSlams Core.
|
|
4
|
+
|
|
5
|
+
## Development
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
python -m venv .venv
|
|
9
|
+
. .venv/bin/activate
|
|
10
|
+
pip install -e ".[dev]"
|
|
11
|
+
pytest
|
|
12
|
+
ruff check .
|
|
13
|
+
mypy src
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Design Rules
|
|
17
|
+
|
|
18
|
+
- Keep public contracts versioned.
|
|
19
|
+
- Keep arena identity owned by eSlams, even when logic is adapter-backed.
|
|
20
|
+
- Never put hidden official eval content in the public repo.
|
|
21
|
+
- Preserve trace privacy boundaries at generation time, not only in UI.
|
|
22
|
+
- Add deterministic tests for every arena and artifact behavior.
|
|
23
|
+
|
|
24
|
+
## Pull Requests
|
|
25
|
+
|
|
26
|
+
Include:
|
|
27
|
+
|
|
28
|
+
- a clear behavior summary
|
|
29
|
+
- tests for new contracts or arena behavior
|
|
30
|
+
- docs for protocol, artifact, or CLI changes
|
|
31
|
+
- changelog entries for user-visible contracts, fixtures, or CLI changes
|
|
32
|
+
- migration notes when public formats change
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 eSlams
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|