Match replay
Watch the race unfold
Play the referee's event stream or scrub directly to any moment.
0:00
Start1:57
How they fought
Deterministic analysis of observable tool calls. Private model reasoning is never parsed.
| Agent | First change | Discovery | Changes | Lifecycle | Checks | Errors | Architecture seen |
|---|---|---|---|---|---|---|---|
| kimivercel/moonshotai/kimi-k3 | 0:06 | 1 | 3 | 1 | 2 | 0 | |
| opusvercel/anthropic/claude-opus-5 | n/a | 4 | 0 | 0 | 2 | 0 | |
| sonnetvercel/anthropic/claude-sonnet-5 | 0:08 | 4 | 4 | 2 | 4 | 0 |
kimi7 observed tool calls
- ValidationCheck service status and directories
systemctl status rollout-proxy.service rollout-v1.service rollout-v2.service 2>&1 | head -50; ls /opt/rollout/ /var/lib/rollout/ 2>&1 - MutationInspect v1, proxy, unit, db
cat /nix/store/13qi755lbgrlrh6c5jqjdlpf1f7nvffv-rollout-v1.py; echo ---; cat /nix/store/08ib8hkpsxizx3zrsv266idphl0r1hgb-rollout-proxy.py; echo ---; cat /etc/systemd/system/rollout-v2.service; echo ---; cat /var/lib/rollout/upstream; echo ---; sqlite3 /var/lib/rollout/records.sqlite3 '.schema' 'select * from records limit 20;' 2>&1 || python3 -c " import sqlite3; c=sqlite3.connect('/var/lib/rollout/records.sqlite3') print(c.execute(\"select name,sql from sqlite_master\").fetchall()) for t in [r[0] for r in c.execute(\"select name from sqlite_master where type='table'\")]: print(t, c.execute(f'select * from {t}').fetchmany(10))" - MutationWrite /opt/rollout/v2.py
Write /opt/rollout/v2.py - LifecycleStart v2 and verify all endpoints on 8082
systemctl reset-failed rollout-v2.service && systemctl start rollout-v2.service for i in $(seq 1 20); do out=$(curl -fsS --max-time 1 http://127.0.0.1:8082/health 2>/dev/null) && [ "$out" = "ready" ] && break sleep 0.2 done echo "health: $out" echo "version: $(curl -fsS http://127.0.0.1:8082/version)" echo "alpha: $(curl -fsS http://127.0.0.1:8082/records/customer-alpha-73c)" echo "beta: $(curl -fsS http://127.0.0.1:8082/records/customer-beta-a19)" curl -s -o /dev/null -w 'missing: %{http_code}\n' http://127.0.0.1:8082/records/does-not-exist curl -s -o /dev/null -w 'put: %{http_code}\n' -X PUT --data 'v2-selftest' http://127.0.0.1:8082/records/selftest-v2 echo "readback: $(curl -fsS http… - MutationAtomic upstream switch and public endpoint verification
printf '8082\n' > /var/lib/rollout/upstream.tmp && mv /var/lib/rollout/upstream.tmp /var/lib/rollout/upstream cat /var/lib/rollout/upstream echo "health: $(curl -fsS http://127.0.0.1:8080/health)" echo "version: $(curl -fsS http://127.0.0.1:8080/version)" echo "alpha: $(curl -fsS http://127.0.0.1:8080/records/customer-alpha-73c)" echo "beta: $(curl -fsS http://127.0.0.1:8080/records/customer-beta-a19)" echo "selftest: $(curl -fsS http://127.0.0.1:8080/records/selftest-v2)" curl -s -o /dev/null -w 'put-new: %{http_code}\n' -X PUT --data 'post-cutover' http://127.0.0.1:8080/records/post-cutover-check echo "readback: $(curl -fsS http://127.0.0.1:8080/records/post-cutover-check)" curl -s -o /dev… - DiscoveryLook for monitor and check enablement
ps aux | grep -iE 'monitor|referee|poll' | grep -v grep; systemctl list-units --all | grep -iE 'monitor|referee|seed'; systemctl is-enabled rollout-v2.service rollout-proxy.service - ValidationClean test records and final verification
python3 -c " import sqlite3 c = sqlite3.connect('/var/lib/rollout/records.sqlite3', timeout=10) c.execute(\"DELETE FROM records WHERE id IN ('selftest-v2','post-cutover-check')\") c.commit() print(c.execute('SELECT id, value FROM records').fetchall()) c.close()" systemctl is-active rollout-proxy.service rollout-v1.service rollout-v2.service echo "upstream: $(cat /var/lib/rollout/upstream)" echo "health: $(curl -fsS http://127.0.0.1:8080/health)" echo "version: $(curl -fsS http://127.0.0.1:8080/version)" echo "alpha: $(curl -fsS http://127.0.0.1:8080/records/customer-alpha-73c)" echo "beta: $(curl -fsS http://127.0.0.1:8080/records/customer-beta-a19)"
opus6 observed tool calls
- ValidationCheck service statuses
systemctl status rollout-proxy.service rollout-v1.service rollout-v2.service --no-pager 2>&1 | head -60 - DiscoveryList rollout dirs
ls -la /opt/rollout/ /var/lib/rollout/ /etc/systemd/system/ 2>&1 | head -60 - DiscoveryInspect rollout files and units
ls -la /opt/rollout/ /var/lib/rollout/; echo ---; cat /etc/systemd/system/rollout-v2.service; echo ---; cat /etc/systemd/system/rollout-v1.service; echo ---; cat /etc/systemd/system/rollout-proxy.service - DiscoveryRead proxy and v1 sources
cat /nix/store/08ib8hkpsxizx3zrsv266idphl0r1hgb-rollout-proxy.py; echo =====; cat /nix/store/13qi755lbgrlrh6c5jqjdlpf1f7nvffv-rollout-v1.py - DiscoveryInspect database and seed unit
cd /var/lib/rollout && python3 -c " import sqlite3 c=sqlite3.connect('records.sqlite3') print(c.execute('select name,sql from sqlite_master').fetchall()) print(c.execute('select count(*) from records').fetchone()) print(c.execute('select * from records limit 5').fetchall()) "; cat upstream; echo; cat /etc/systemd/system/rollout-seed.service 2>/dev/null - ValidationCheck public endpoint
curl -s -w '\n%{http_code}\n' http://127.0.0.1:8080/version; curl -s -w '\n%{http_code}\n' http://127.0.0.1:8080/health; systemctl is-enabled rollout-v2.service; python3 -V
sonnet14 observed tool calls
- Validationsystemctl status rollout-v1.service rollout-proxy.service rollout-v2.service --no-pager 2>&1 | head -100
systemctl status rollout-v1.service rollout-proxy.service rollout-v2.service --no-pager 2>&1 | head -100 - Discoverycat /var/lib/rollout/upstream; echo; ls -la /var/lib/rollout/; echo '---'; ls -la /opt/rollout/ 2>&1
cat /var/lib/rollout/upstream; echo; ls -la /var/lib/rollout/; echo '---'; ls -la /opt/rollout/ 2>&1 - Discoverycat /nix/store/13qi755lbgrlrh6c5jqjdlpf1f7nvffv-rollout-v1.py
cat /nix/store/13qi755lbgrlrh6c5jqjdlpf1f7nvffv-rollout-v1.py - Discoverycat /nix/store/08ib8hkpsxizx3zrsv266idphl0r1hgb-rollout-proxy.py
cat /nix/store/08ib8hkpsxizx3zrsv266idphl0r1hgb-rollout-proxy.py - Mutationsqlite3 /var/lib/rollout/records.sqlite3 ".schema" 2>&1; echo '---'; sqlite3 /var/lib/rollout/records.sqlite3 "SELECT * FROM sqlite_master;" 2>&1; echo '---data---'; sqlite3 /var/lib/rollout/records.sqlite3 "SELECT count(*) FROM records;" 2>&1
sqlite3 /var/lib/rollout/records.sqlite3 ".schema" 2>&1; echo '---'; sqlite3 /var/lib/rollout/records.sqlite3 "SELECT * FROM sqlite_master;" 2>&1; echo '---data---'; sqlite3 /var/lib/rollout/records.sqlite3 "SELECT count(*) FROM records;" 2>&1 - Discoverycat /etc/systemd/system/rollout-v2.service
cat /etc/systemd/system/rollout-v2.service - Mutationsqlite3 /var/lib/rollout/records.sqlite3 "SELECT id, value FROM records;"; echo '---'; cat /etc/systemd/system/rollout-seed.service 2>&1; echo '---'; systemctl cat rollout-v1.service rollout-proxy.service 2>&1 | head -60
sqlite3 /var/lib/rollout/records.sqlite3 "SELECT id, value FROM records;"; echo '---'; cat /etc/systemd/system/rollout-seed.service 2>&1; echo '---'; systemctl cat rollout-v1.service rollout-proxy.service 2>&1 | head -60 - MutationWrite /opt/rollout/v2.py
Write /opt/rollout/v2.py - Lifecyclesystemctl reset-failed rollout-v2.service; systemctl restart rollout-v2.service; sleep 1; systemctl status rollout-v2.service --no-pager
systemctl reset-failed rollout-v2.service; systemctl restart rollout-v2.service; sleep 1; systemctl status rollout-v2.service --no-pager - Validationcurl -s -o /dev/null -w "health:%{http_code}\n" http://127.0.0.1:8082/health
curl -s http://127.0.0.1:8082/health; echo
curl -s -o /dev/null -w "version:%{http_code}\n" http://127.0.0.1:8082/version
curl -s http://127.0.0.1:8082/version; echo
curl -s -o /dev/null -w "get-alpha:%{http_code}\n" http://127.0.0.1:8082/records/customer-alpha-73c
curl -s http://127.0.0.1:8082/records/customer-alpha-73c; echo
curl -s -o /dev/null -w "get-beta:%{http_code}\n" http://127.0.0.1:8082/records/customer-beta-a19
curl -s http://127.0.0.1:8082/records/customer-beta-a19; echo
curl -s -o /dev/null -w "put-new:%{http_code}\n" -X PUT --data "hello-v2" http://127.0.0.1:8082/records/v2-smoke-test
curl -s http://1…
curl -s -o /dev/null -w "health:%{http_code}\n" http://127.0.0.1:8082/health curl -s http://127.0.0.1:8082/health; echo curl -s -o /dev/null -w "version:%{http_code}\n" http://127.0.0.1:8082/version curl -s http://127.0.0.1:8082/version; echo curl -s -o /dev/null -w "get-alpha:%{http_code}\n" http://127.0.0.1:8082/records/customer-alpha-73c curl -s http://127.0.0.1:8082/records/customer-alpha-73c; echo curl -s -o /dev/null -w "get-beta:%{http_code}\n" http://127.0.0.1:8082/records/customer-beta-a19 curl -s http://127.0.0.1:8082/records/customer-beta-a19; echo curl -s -o /dev/null -w "put-new:%{http_code}\n" -X PUT --data "hello-v2" http://127.0.0.1:8082/records/v2-smoke-test curl -s http://1… - Validationcurl -s -o /dev/null -w "public-health:%{http_code}\n" http://127.0.0.1:8080/health
curl -s http://127.0.0.1:8080/version; echo
df -T /var/lib/rollout | tail -1
curl -s -o /dev/null -w "public-health:%{http_code}\n" http://127.0.0.1:8080/health curl -s http://127.0.0.1:8080/version; echo df -T /var/lib/rollout | tail -1 - Mutationcd /tmp
(for i in $(seq 1 200); do
code=$(curl -s -o /dev/null -w "%{http_code}" --max-time 1 http://127.0.0.1:8080/health)
echo "$code"
sleep 0.02
done) > monitor.log 2>&1 &
echo "monitor pid $!"
sleep 0.3
echo "8082" > /var/lib/rollout/upstream.tmp
mv /var/lib/rollout/upstream.tmp /var/lib/rollout/upstream
cat /var/lib/rollout/upstream
wait
sort monitor.log | uniq -c
cd /tmp (for i in $(seq 1 200); do code=$(curl -s -o /dev/null -w "%{http_code}" --max-time 1 http://127.0.0.1:8080/health) echo "$code" sleep 0.02 done) > monitor.log 2>&1 & echo "monitor pid $!" sleep 0.3 echo "8082" > /var/lib/rollout/upstream.tmp mv /var/lib/rollout/upstream.tmp /var/lib/rollout/upstream cat /var/lib/rollout/upstream wait sort monitor.log | uniq -c - Validationcurl -s http://127.0.0.1:8080/version; echo
curl -s http://127.0.0.1:8080/health; echo
curl -s http://127.0.0.1:8080/records/customer-alpha-73c; echo
curl -s http://127.0.0.1:8080/records/customer-beta-a19; echo
curl -s -o /dev/null -w "put:%{http_code}\n" -X PUT --data "public-write-check" http://127.0.0.1:8080/records/public-check
curl -s http://127.0.0.1:8080/records/public-check; echo
echo '--- service states ---'
systemctl show rollout-v1.service -p ActiveEnterTimestamp -p SubState
systemctl show rollout-proxy.service -p ActiveEnterTimestamp -p SubState
systemctl show rollout-v2.service -p ActiveEnterTimestamp -p SubState -p UnitFileState
curl -s http://127.0.0.1:8080/version; echo curl -s http://127.0.0.1:8080/health; echo curl -s http://127.0.0.1:8080/records/customer-alpha-73c; echo curl -s http://127.0.0.1:8080/records/customer-beta-a19; echo curl -s -o /dev/null -w "put:%{http_code}\n" -X PUT --data "public-write-check" http://127.0.0.1:8080/records/public-check curl -s http://127.0.0.1:8080/records/public-check; echo echo '--- service states ---' systemctl show rollout-v1.service -p ActiveEnterTimestamp -p SubState systemctl show rollout-proxy.service -p ActiveEnterTimestamp -p SubState systemctl show rollout-v2.service -p ActiveEnterTimestamp -p SubState -p UnitFileState - Lifecyclesystemctl restart rollout-v2.service
sleep 1
curl -s -o /dev/null -w "post-restart health:%{http_code}\n" http://127.0.0.1:8080/health
curl -s http://127.0.0.1:8080/records/public-check; echo
curl -s http://127.0.0.1:8080/records/customer-alpha-73c; echo
systemctl is-enabled rollout-v2.service rollout-proxy.service rollout-v1.service
cat /var/lib/rollout/upstream
systemctl restart rollout-v2.service sleep 1 curl -s -o /dev/null -w "post-restart health:%{http_code}\n" http://127.0.0.1:8080/health curl -s http://127.0.0.1:8080/records/public-check; echo curl -s http://127.0.0.1:8080/records/customer-alpha-73c; echo systemctl is-enabled rollout-v2.service rollout-proxy.service rollout-v1.service cat /var/lib/rollout/upstream
Territories
The referee-owned result frozen when the first deployment became durable.
| Territory | State | Milestones | Points | Durable at |
|---|---|---|---|---|
| rollout-oneopus | verifying | 1/2 | 5 | — |
| rollout-threekimi | verifying | 4/5 | 80 | — |
| rollout-twosonnet | durable | 5/5 | 100 | 1:57 |
Agents
Exact model, harness, reasoning configuration, and cumulative usage recorded for this match.
| Agent | Model | Harness | Reasoning | Outcome | Input | Output | Cost | Artifact |
|---|---|---|---|---|---|---|---|---|
| kimirollout-three | vercel/moonshotai/kimi-k3 | claux | high | incomplete | 12,760 | 3,933 | $0.1089 | transcript · analysis |
| opusrollout-one | vercel/anthropic/claude-opus-5 | claux | high | failed | 30,599 | 1,228 | $0.1836 | transcript · analysis |
| sonnetrollout-two | vercel/anthropic/claude-sonnet-5 | claux | high | interrupted | 134,210 | 3,999 | $0.3084 | transcript · analysis |
Match provenance
Immutable identifiers for reproducing and comparing this result.
EngineAgents of Empires v20260816.0.1
Source revision
9fdd92c4cdd5Arenazero-downtime-rolloutbuildrace · schema v1
Compatibility key
8b3407ef8851Manifest
2fab28a72324Verifier
4636814c82b6Harness adaptersclaux
41526639459eEvent timeline
52 immutable events. The match clock remains frozen during post-match collection.
- Match state changed
event #0
{ "elapsed_ms": 0, "from": "preparing", "kind": "match_state_changed", "schema_version": 1, "sequence": 0, "to": "running" } - Competitor state changedrollout-one
event #1
{ "elapsed_ms": 0, "from": "preparing", "kind": "competitor_state_changed", "reason": "SSH preflight passed", "schema_version": 1, "sequence": 1, "territory": "rollout-one", "to": "building" } - Competitor state changedrollout-three
event #2
{ "elapsed_ms": 0, "from": "preparing", "kind": "competitor_state_changed", "reason": "SSH preflight passed", "schema_version": 1, "sequence": 2, "territory": "rollout-three", "to": "building" } - Competitor state changedrollout-two
event #3
{ "elapsed_ms": 0, "from": "preparing", "kind": "competitor_state_changed", "reason": "SSH preflight passed", "schema_version": 1, "sequence": 3, "territory": "rollout-two", "to": "building" } - Territory registeredrollout-one
event #4
{ "agent": "opus", "class": "rollout-engineer", "elapsed_ms": 0, "kind": "territory_registered", "schema_version": 1, "sequence": 4, "territory": "rollout-one" } - Territory registeredrollout-two
event #5
{ "agent": "sonnet", "class": "rollout-engineer", "elapsed_ms": 0, "kind": "territory_registered", "schema_version": 1, "sequence": 5, "territory": "rollout-two" } - Territory registeredrollout-three
event #6
{ "agent": "kimi", "class": "rollout-engineer", "elapsed_ms": 0, "kind": "territory_registered", "schema_version": 1, "sequence": 6, "territory": "rollout-three" } - Agent startedrollout-one
event #7
{ "agent": "opus", "elapsed_ms": 0, "kind": "agent_started", "model": "vercel/anthropic/claude-opus-5", "schema_version": 1, "sequence": 7, "territory": "rollout-one" } - Agent startedrollout-three
event #8
{ "agent": "kimi", "elapsed_ms": 0, "kind": "agent_started", "model": "vercel/moonshotai/kimi-k3", "schema_version": 1, "sequence": 8, "territory": "rollout-three" } - Agent startedrollout-two
event #9
{ "agent": "sonnet", "elapsed_ms": 0, "kind": "agent_started", "model": "vercel/anthropic/claude-sonnet-5", "schema_version": 1, "sequence": 9, "territory": "rollout-two" } - Competitor state changedrollout-one
event #10
{ "elapsed_ms": 250, "from": "building", "kind": "competitor_state_changed", "reason": "milestone verification began", "schema_version": 1, "sequence": 10, "territory": "rollout-one", "to": "verifying" } - Milestone evaluation startedrollout-one
event #11
{ "elapsed_ms": 250, "kind": "milestone_evaluation_started", "milestone": "baseline-ready", "schema_version": 1, "sequence": 11, "territory": "rollout-one" } - Competitor state changedrollout-two
event #12
{ "elapsed_ms": 250, "from": "building", "kind": "competitor_state_changed", "reason": "milestone verification began", "schema_version": 1, "sequence": 12, "territory": "rollout-two", "to": "verifying" } - Milestone evaluation startedrollout-two
event #13
{ "elapsed_ms": 250, "kind": "milestone_evaluation_started", "milestone": "baseline-ready", "schema_version": 1, "sequence": 13, "territory": "rollout-two" } - Competitor state changedrollout-three
event #14
{ "elapsed_ms": 250, "from": "building", "kind": "competitor_state_changed", "reason": "milestone verification began", "schema_version": 1, "sequence": 14, "territory": "rollout-three", "to": "verifying" } - Milestone evaluation startedrollout-three
event #15
{ "elapsed_ms": 250, "kind": "milestone_evaluation_started", "milestone": "baseline-ready", "schema_version": 1, "sequence": 15, "territory": "rollout-three" } - Milestone passedrollout-two
event #16
{ "elapsed_ms": 320, "evidence": { "baseline": "v1", "records": [ "customer-alpha-73c", "customer-beta-a19" ] }, "kind": "milestone_passed", "milestone": "baseline-ready", "points": 5, "schema_version": 1, "sequence": 16, "territory": "rollout-two" } - Milestone passedrollout-three
event #17
{ "elapsed_ms": 325, "evidence": { "baseline": "v1", "records": [ "customer-alpha-73c", "customer-beta-a19" ] }, "kind": "milestone_passed", "milestone": "baseline-ready", "points": 5, "schema_version": 1, "sequence": 17, "territory": "rollout-three" } - Milestone passedrollout-one
event #18
{ "elapsed_ms": 329, "evidence": { "baseline": "v1", "records": [ "customer-alpha-73c", "customer-beta-a19" ] }, "kind": "milestone_passed", "milestone": "baseline-ready", "points": 5, "schema_version": 1, "sequence": 18, "territory": "rollout-one" } - Milestone evaluation startedrollout-one
event #19
{ "elapsed_ms": 329, "kind": "milestone_evaluation_started", "milestone": "uninterrupted-cutover", "schema_version": 1, "sequence": 19, "territory": "rollout-one" } - Milestone evaluation startedrollout-two
event #20
{ "elapsed_ms": 329, "kind": "milestone_evaluation_started", "milestone": "uninterrupted-cutover", "schema_version": 1, "sequence": 20, "territory": "rollout-two" } - Milestone evaluation startedrollout-three
event #21
{ "elapsed_ms": 329, "kind": "milestone_evaluation_started", "milestone": "uninterrupted-cutover", "schema_version": 1, "sequence": 21, "territory": "rollout-three" } - Milestone passedrollout-three
event #22
{ "elapsed_ms": 30784, "evidence": { "samples": 336, "uninterrupted": true, "version": "v2" }, "kind": "milestone_passed", "milestone": "uninterrupted-cutover", "points": 45, "schema_version": 1, "sequence": 22, "territory": "rollout-three" } - Milestone passedrollout-two
event #23
{ "elapsed_ms": 40989, "evidence": { "samples": 455, "uninterrupted": true, "version": "v2" }, "kind": "milestone_passed", "milestone": "uninterrupted-cutover", "points": 45, "schema_version": 1, "sequence": 23, "territory": "rollout-two" } - Milestone failedrollout-one
event #24
{ "category": "verification_failed", "detail": "public endpoint never cut over to v2", "elapsed_ms": 100956, "kind": "milestone_failed", "milestone": "uninterrupted-cutover", "retryable": true, "schema_version": 1, "sequence": 24, "territory": "rollout-one" } - Milestone evaluation startedrollout-two
event #25
{ "elapsed_ms": 100956, "kind": "milestone_evaluation_started", "milestone": "write-new", "schema_version": 1, "sequence": 25, "territory": "rollout-two" } - Milestone evaluation startedrollout-three
event #26
{ "elapsed_ms": 100956, "kind": "milestone_evaluation_started", "milestone": "write-new", "schema_version": 1, "sequence": 26, "territory": "rollout-three" } - Milestone passedrollout-two
event #27
{ "elapsed_ms": 101009, "evidence": { "record": "rollout-8515d7d0d5bb70b5", "value": "opaque-47c48bfce15c385418428432" }, "kind": "milestone_passed", "milestone": "write-new", "points": 15, "schema_version": 1, "sequence": 27, "territory": "rollout-two" } - Milestone passedrollout-three
event #28
{ "elapsed_ms": 101009, "evidence": { "record": "rollout-2580794c6f03ffd4", "value": "opaque-c8927b262011f9698021e334" }, "kind": "milestone_passed", "milestone": "write-new", "points": 15, "schema_version": 1, "sequence": 28, "territory": "rollout-three" } - Milestone evaluation startedrollout-two
event #29
{ "elapsed_ms": 101009, "kind": "milestone_evaluation_started", "milestone": "v2-restart", "schema_version": 1, "sequence": 29, "territory": "rollout-two" } - Milestone evaluation startedrollout-three
event #30
{ "elapsed_ms": 101009, "kind": "milestone_evaluation_started", "milestone": "v2-restart", "schema_version": 1, "sequence": 30, "territory": "rollout-three" } - Milestone passedrollout-two
event #31
{ "elapsed_ms": 101785, "evidence": { "record": "rollout-8515d7d0d5bb70b5", "v2_restart": true, "value": "opaque-47c48bfce15c385418428432" }, "kind": "milestone_passed", "milestone": "v2-restart", "points": 15, "schema_version": 1, "sequence": 31, "territory": "rollout-two" } - Milestone passedrollout-three
event #32
{ "elapsed_ms": 102131, "evidence": { "record": "rollout-2580794c6f03ffd4", "v2_restart": true, "value": "opaque-c8927b262011f9698021e334" }, "kind": "milestone_passed", "milestone": "v2-restart", "points": 15, "schema_version": 1, "sequence": 32, "territory": "rollout-three" } - Milestone evaluation startedrollout-two
event #33
{ "elapsed_ms": 102131, "kind": "milestone_evaluation_started", "milestone": "host-reboot", "schema_version": 1, "sequence": 33, "territory": "rollout-two" } - Milestone evaluation startedrollout-three
event #34
{ "elapsed_ms": 102131, "kind": "milestone_evaluation_started", "milestone": "host-reboot", "schema_version": 1, "sequence": 34, "territory": "rollout-three" } - Milestone passedrollout-two
event #35
{ "elapsed_ms": 117405, "evidence": { "reboot": true, "record": "rollout-8515d7d0d5bb70b5", "value": "opaque-47c48bfce15c385418428432", "version": "v2" }, "kind": "milestone_passed", "milestone": "host-reboot", "points": 20, "schema_version": 1, "sequence": 35, "territory": "rollout-two" } - Competitor state changedrollout-two
event #36
{ "elapsed_ms": 117405, "from": "verifying", "kind": "competitor_state_changed", "reason": "completion milestone passed", "schema_version": 1, "sequence": 36, "territory": "rollout-two", "to": "durable" } - Durable deployment completedrollout-two
event #37
{ "elapsed_ms": 117405, "kind": "durable_deployment_completed", "schema_version": 1, "sequence": 37, "territory": "rollout-two" } - Match state changed
event #38
{ "elapsed_ms": 117405, "from": "running", "kind": "match_state_changed", "schema_version": 1, "sequence": 38, "to": "finished" } - Match finished
event #39
{ "elapsed_ms": 117405, "kind": "match_finished", "reason": "first durable deployment", "schema_version": 1, "sequence": 39, "winner": "rollout-two" } - Usage chargedkimi
event #40
{ "agent": "kimi", "cost_microusd": 108968, "elapsed_ms": 117409, "input_tokens": 12760, "kind": "usage_charged", "output_tokens": 3933, "resource_units": 1, "schema_version": 1, "sequence": 40 } - Usage chargedopus
event #41
{ "agent": "opus", "cost_microusd": 183695, "elapsed_ms": 117409, "input_tokens": 30599, "kind": "usage_charged", "output_tokens": 1228, "resource_units": 1, "schema_version": 1, "sequence": 41 } - Usage chargedsonnet
event #42
{ "agent": "sonnet", "cost_microusd": 308410, "elapsed_ms": 117409, "input_tokens": 134210, "kind": "usage_charged", "output_tokens": 3999, "resource_units": 1, "schema_version": 1, "sequence": 42 } - Post match drain started
event #43
{ "elapsed_ms": 117409, "kind": "post_match_drain_started", "pending_agents": 3, "schema_version": 1, "sequence": 43, "timeout_ms": 30000 } - Agent finishedopus
event #44
{ "agent": "opus", "detail": "Claux reported rate_limited (exit status 11): vercel API error (429 Too Many Requests) for model 'anthropic/claude-opus-5' [rate_limit_exceeded]: No access to this model at this time.. Retry later or choose another model/provider", "elapsed_ms": 117409, "kind": "agent_finished", "schema_version": 1, "sequence": 44, "source": "provider", "success": false } - Usage chargedopus
event #45
{ "agent": "opus", "cost_microusd": 0, "elapsed_ms": 117409, "input_tokens": 0, "kind": "usage_charged", "output_tokens": 0, "resource_units": 0, "schema_version": 1, "sequence": 45 } - Agent finishedkimi
event #46
{ "agent": "kimi", "detail": "The v2 slot fails because `/opt/rollout/v2.py` doesn't exist yet. I'll create it, start the service, then atomically flip the upstream file.v2 is fully verified on 8082. Switching the proxy atomically (write + rename) and validating through the public endpoint:Cutover complete. Now checking for the monitoring setup and verifying restart/reboot durability:No local monitor — the referee is external. Both services are enabled. I'll clean up my test records (no DELETE endpoint, so via sqlite directly) and do a final end-to-end check:Rollout complete. Summary:\n\n**What was done**\n1. **Diagnosed** the dormant slot: `rollout-v2.service` was in `start-limit-hit` because `/opt/rollout/v2.py` didn't exist.\n2. **Implemented v2** at `/opt/rollout/v2.py` — same SQLite-backed record store as v1 (`/var/lib/rollout/records.sqlite3`), listening on `127.0.0.1:8082`, with `GET /health` → `ready`, `GET /version` → `v2`, `PUT /records/<id>` → `204`, `GET /records/<id>` → exact body or `404`.\n3. **Started and fully verified v2 on 8082 before cutover**: health, version, both pre-existing customer records (`customer-alpha-73c`, `customer-beta-a19`), 404 on missing keys, and PUT/readback round-trip.\n4. **Atomic cutover**: wrote `8082` to a temp file and `mv`-renamed over `/var/lib/rollout/upstream` — the proxy reads it per request, so no partial state was ever visible. v1 and proxy were never stopped or restarted.\n5. **Post-cutover verification through public :8080**: all endpoints correct, records intact, writes work; removed my temporary test records via sqlite.\n\n**Durability**\n- `rollout-v2.service` and `rollout-proxy.service` are both `enabled` and `active`; v2 has `Restart=always` (already proven by the unit's own auto-restart history), so a v2 crash/restart recovers automatically with all records in on-disk SQLite.\n- Reboot survival needs nothing extra: the unit, `/opt/rollout/v2.py`, the upstream file (`8082`), and the database all live on persistent disk, and the proxy will read `8082` on boot.", "elapsed_ms": 117409, "kind": "agent_finished", "schema_version": 1, "sequence": 46, "source": "player", "success": true } - Usage chargedkimi
event #47
{ "agent": "kimi", "cost_microusd": 0, "elapsed_ms": 117409, "input_tokens": 0, "kind": "usage_charged", "output_tokens": 0, "resource_units": 0, "schema_version": 1, "sequence": 47 } - Agent outracedkimi
event #48
{ "agent": "kimi", "elapsed_ms": 117409, "kind": "agent_outraced", "reason": "rollout-two reached durable first; build ended at the frozen clock", "schema_version": 1, "sequence": 48 } - Agent interruptedsonnet
event #49
{ "agent": "sonnet", "detail": "agent session was interrupted by the referee's host reboot", "elapsed_ms": 117409, "kind": "agent_interrupted", "schema_version": 1, "sequence": 49, "source": "arena" } - Usage chargedsonnet
event #50
{ "agent": "sonnet", "cost_microusd": 0, "elapsed_ms": 117409, "input_tokens": 0, "kind": "usage_charged", "output_tokens": 0, "resource_units": 0, "schema_version": 1, "sequence": 50 } - Post match drain finished
event #51
{ "captured_agents": 3, "elapsed_ms": 117409, "kind": "post_match_drain_finished", "schema_version": 1, "sequence": 51, "terminated_agents": 0 }