Repository navigation
Conversation
The seat client and the station move from the commander app into recreation_towers_ground, with a headless computer commander (commander::run, binary towers_commander). The server no longer decides or sends plans: it starts a computer commander as a seat client for a computer team. A seat changes hands during a game: a person relieves a computer, and a computer takes a seat a person leaves. Two people can play. Co-Authored-By: Claude <noreply@anthropic.com>
…d reckoning; crash log lines Measured on SITL: the first version asked for AGENT in the middle of the take-off transition (two games lost a drone at its base), held its clock to one game second past the last map (slow plans at 10x) and planned from the position of the last report. The server prints what a crashed drone was doing and who was near. Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Step 3 of plans/actors.md: one commander path.
What changed
recreation_towers_groundnow holds the seat client (seat), the station (station: the team'sGroundover the air ports, the map from telemetry,Tallyfor the server's report) and the computer commander (commander::run(addr, team, Brain::Play|Idle, tally, &stop)), plus the binarytowers_commander --team blue|red [--host H] [--port P] [--idle]. The commander app uses the sameseat/station(its files re-export them).Join::Compute(Team),Join::commands(),ToSeat::Orders(Vec<(Option<Order>, bool)>)sent once after the welcome of a seat that commands.towers_server: the in-processcommandersand the truth-basedGroundare gone; the server decides and sends no plan. For a computer (ornobody, which gives no orders) team it startscommander::runin a thread that joins over loopback. Kept in the server: light-quad sticks from stored orders, take-off, referee, air. New flag--on-leave computer|wait(default computer); documented in the server's header anddomains/recreation/README.md. A crash now prints a detail line (time, order, low/high, jammed, silent, nearest flying drone).Join::Command) relieves a computer (Join::Compute) holder (it is sentRefused("relieved...")and disconnected) and starts from the orders the drones have; when a person leaves, a computer takes the seat after 1 s unless the person is back. Two people (one per team) can join.Tests
cargo test --release -p recreation_towers -p recreation_towers_ground: pass (includestests/commander.rs: a commander against a fake server gives orders from umpire + sites alone, leaves when relieved).cargo test --release -p recreation_towers_server --bins: 29 pass, including the Gate A tests inseats.rs(same message kinds for person and computer seats; a Red scout in the open is in the spectator's truth and not on the map built from a seat's messages; takeover; computer takes a freed seat; two people).cargo build --release -p teleoperation_command,cargo fmt, clippy on the changed crates: clean.expectation check expectations: 0 errors.Gate B (real ArduPlane SITL,
acceptancetest): fails on "No drone crashes in a game" for plainactors-plantoo (0 to 7 crashes per game here), so neither path passes it reliably. Every other expectation passes (10 in AGENT, 0 refused, 0 fog leaks, towers taken). Crashes per game, 4 games per batch at--speedup 10, one at a time, new path against plainactors-planinterleaved:Defects of the new path found and fixed: AGENT was asked for in the middle of the take-off transition (two games lost a drone at its base at t = 10 s); the station clock was capped at one game second past the last map (plans slowed at 10x); plans came from the position of the last report (now carried on by its velocity). Apart from those take-off crashes (and one on
actors-plan) no crash had another drone within 30 m, so the loss of true enemy traffic does not show; the rest are tree strikes while taking a tower, in both paths.Not done
.expectsteps: handover is covered by Rust tests with seat clients; the arduplane driver only plays computer vs computer (text added to its feature).Ordersecho is the server's record of what the drones last heard, not read from telemetry.🤖 Generated with Claude Code