[Movement] Stop bots reversing direction three times as often as a human player
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 22/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Domain
- ai-infra-agents
Research direction
The reversal behaviour is driven by Argus_Combat in src/argus.qc (strafe re-roll around line 6307) and the strafe hazard probe near line 6678, plus Argus_HazardSteer. Start by reading how ar_moveyaw is set in those paths, then the demo reader in the lab (argus-mcp demo) that computes reversals per minute. Done means a cause marker on every reversal over 90 degrees and bot reversals at or below 1.5 times the human median (about 33 per minute) on dm4 and dm2 with hard gates unchanged.
Written by the indexing model from the issue text.
Description
Problem
Played on dm4 today against the installed build (MD5 A3F7AA9428846DE7F7B327506F5F5D3D), the bots look like bumper cars: they bounce between headings instead of moving like players. Priority 1. Every gate the lab keeps passed while this was true, so it is the most visible gap between what the lab measures and what a player sees.
Measured
A reversal here is a turn of more than 120 degrees in horizontal travel direction within 0.25 s, at over 120 u/s on both sides, counted at most once per 0.5 s. It was computed from the full-rate player tracks in six harvested dm4 session demos (argus-mcp demo <stem>:export), per minute of visible movement:
| Session | Carmack | Romero | Joe Rogan | Human |
|---|---|---|---|---|
| 2026-08-28 v393b | 67.7 | 71.1 | 62.8 | 23.1 |
| 2026-08-29 v405 | 64.9 | 61.6 | 70.6 | 21.9 |
| 2026-09-16 | 60.1 | 63.1 | 53.1 | 19.3 |
| 2026-09-21 6b9dc220 | 58.9 | 65.9 | 66.2 | 25.6 |
| 2026-10-22 review517 | 64.5 | 65.6 | 62.2 | 23.1 |
| 2026-11-01 bumpercars | 59.5 | 69.5 | 61.4 | 17.7 |
- Bots reverse 53 to 71 times per moving minute in every session; the human 18 to 26. Roughly three times as often, on every build since late August. It is long-standing, not a regression.
- Not a sampling artefact. Bot tracks arrive at 23 to 42 Hz (PVS-culled to the recorder) and the human at about 69 Hz. Decimating the human track to bot rates LOWERS its count (today 17.7 at 69 Hz, 16.5 at 34 Hz, 14.9 at 23 Hz), so the gap is understated if anything.
- Same kinds of move, too many of them. Pooled over all six sessions, bots made 1,420 reversals: 60 per cent sideways relative to facing (strafe flips), 26 per cent while travelling forward, 15 per cent while backing. The human's 361 split 59, 23 and 18. The bots do what a player does, about three times as often.
- Today's tape (
runs/shane_dm4_2026-11-01_bumpercars.log, about 2.6 minutes) also carries 120 wall-slide markers (about 15 per bot-minute), 257 hazard deflections and 15 body-block sidesteps.
Why the lab never saw it
ARGLOG samples every bot twice a second, and every gate, argus_humanness.py and argus_gait.py read those samples. A quarter-second reversal falls between two of them. Only a demo carries full-rate motion, and no gate reads a demo. #517 measured authored manoeuvres, not ordinary movement.
Candidate causes, unconfirmed
Each of these flips ar_moveyaw instantly. NetQuake ground acceleration then carries the bot from one heading to the opposite in about a tenth of a second.
- Combat strafe re-roll: every 0.8 to 1.8 s, a 40 per cent chance to reverse (
src/argus.qc,Argus_Combat, around line 6307). This is the most likely source of the 60 per cent lateral share. - Strafe hazard flip: any strafe heading that probes a hazard at 48u reverses immediately, then backs off (around line 6678). dm4 is mostly lava edges.
- Missile-dodge sidesteps, battle-item grab bends, body-block sidesteps and the brink deflection fan in
Argus_HazardSteer(#607 records that its hold-clearing branch is unreachable). - Wall contact:
Argus_WallSlideclips into the wall and its fallback ungrounds. Neither turns before contact, so the bot meets the wall first.
Proposal
- Instrument before changing anything: a throttled
ARGUS <name> flip <cause>marker at every site that reverses or swingsar_moveyawby more than 90 degrees, so a tape attributes each reversal to a cause. - Add the reversal measure to the lab's demo reader, so a recorded session or a lab recording reports it beside the human corpus.
- Fix the dominant cause first. For the strafe it is probably commitment: hold a strafe direction until there is a reason to change it (incoming fire, a hazard, blocked space or a lost line of fire) rather than re-rolling a coin on a timer.
Acceptance
- Every reversal in a tape carries a cause marker, and the lab reports reversals per moving minute from a demo.
- On dm4 and dm2 at the played rate, bot reversals per moving minute fall to at most 1.5 times the human median from the corpus above (about 33), with the hard gates at parity: stalls, lava, freezes, under-fire freezes and engagements, at least three tapes a side on dm4 and five on dm2.
- A human session confirms the bots no longer read as bumper cars. The number is a proxy for feel, the same limit #610 records for the gait distance.
Related: #610, #607, #517, #369, #380.
Evidence is machine-local: runs/shane_dm4_2026-11-01_bumpercars.log (tape) and the six runs/demos/shane_dm4_*.dem sessions above with their exported .tracks.json.
- Dominant language
- Rust
- Stars
- 4
- Forks
- 0
- Avg merge
- 30m
- Merged PRs (30d)
- 130
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from saworbit/argus
-
bug lab rust-mcp
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
enhancement lab research
Difficulty 4/5 3-5 days Newbie friendliness 25/100
Maintainers usually reply within 1 day
-
enhancement lab rust-mcp
Difficulty 4/5 3-5 days Newbie friendliness 30/100
Maintainers usually reply within 1 day
-
bug lab rust-mcp
Difficulty 4/5 3-5 days Newbie friendliness 42/100
Maintainers usually reply within 1 day
-
tooling
Difficulty 3/5 1-2 days Newbie friendliness 55/100
Maintainers usually reply within 1 day
Similar issues
-
priority: medium ready
Difficulty 1/5 Under an hour Newbie friendliness 88/100
TusanHomichi/PSIV#646 ·
Maintainers usually reply within 1 day
-
area:cli good first issue help wanted needs translation priority:P2 type:documentation
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
SpecterAoD/pqkeep#226 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
haowjy/mars-agents#381 ·
Maintainers usually reply within 1 day
-
[Bug]: opencode_go chat route drops reasoning_effort (even 'none'), while the same endpoint honors it via custom_llm_provider=openaiPossibly taken @arvindkumar-ship-it claimed this today. Openllm translation
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
BerriAI/litellm#51871 · 1 comment ·
Maintainers usually reply within 1 day
-
comp-formats
Difficulty 2/5 Half a day Newbie friendliness 64/100
ClickHouse/ClickHouse#131694 ·
Maintainers usually reply within 1 day