@@ -66,4 +66,42 @@ across those worlds.
6666The runner rotates player ordering across simulations to reduce positional bias from factory
6767assignment.
6868
69+ # # Smoke Test
70+
71+ From the repository root, run the dummy-player example :
72+
73+ ` ` ` bash
74+ uv run python main.py configs/examples/SCML__dummy__r1__s2.yaml -o /tmp/codeclash-scml-smoke
75+ ` ` `
76+
77+ Use a fresh `-o` directory when rerunning the smoke check.
78+
79+ Expected shape :
80+
81+ - the command exits with status 0;
82+ - both players pass submission validation;
83+ - stdout includes `In round 0, the winner is ...` and `In round 1, the winner is ...`;
84+ - each round summary contains floating-point average scores for `alpha` and `beta`;
85+ - the output directory contains `metadata.json`, `game.log`, `tournament.log`, and
86+ ` rounds/round_0.tar.gz` / `rounds/round_1.tar.gz`.
87+
88+ A representative `metadata.json` round contains a `scores` object with one floating-point SCML
89+ profit score per player :
90+
91+ ` ` ` json
92+ "scores": {
93+ "alpha": 1.0447501220885806,
94+ "beta": 0.9783875910335903
95+ }
96+ ` ` `
97+
98+ Exact values can change with simulation order and configuration; the smoke check is meant to verify
99+ the Docker/runtime adapter path, player-name mapping, and score/log artifact shape.
100+
101+ The exact tournament directory name includes a timestamp, so inspect the metadata with :
102+
103+ ` ` ` bash
104+ find /tmp/codeclash-scml-smoke -maxdepth 3 -name metadata.json -print
105+ ` ` `
106+
69107--8<-- "docs/_footer.md"
0 commit comments