fix: repeat toolmode laps without chasing fast regrowth #106

Merged
gecko merged 1 commit from t3/toolmode-harvest-loop into main 2026-11-03 20:45:08 +00:00
Owner

What

Toolmode routes now run as finite laps instead of a continuously re-ranked
harvest queue.

  • A lap snapshots the ripe crops present when it starts. Regrowth behind the
    bot cannot extend the committed route or turn it around.
  • Crops already confirmed in the current lap are skipped by the opportunistic
    sweep until the return leg or the next lap. Fast server regrowth no longer
    keeps re-feeding the same tiles.
  • After the final banded pass or legacy route, the bot walks back to the lap's
    start position, still swinging at anything within reach on the way, then
    immediately starts the next lap from current growth.
  • Finishing a lap counts as a completed pass: farm-loop continues without
    waiting for the whole plot to be empty, while a one-pass job stops after the
    lap.
  • A banded pass exit no longer waits for opportunistic swings to confirm, so a
    steady stream of regrown crops cannot pin the route at the pass boundary.

Both the banded coverage route and the sparse/irregular per-tile route use the
same lap/return behaviour.

Validation

  • ./scripts/ci-preflight.sh
  • ./gradlew --no-daemon --max-workers=1 '-Dorg.gradle.jvmargs=-Xms128m -Xmx1g -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8' lint build
  • ./gradlew ... test --rerun-tasks
  • ./scripts/check-release-jar.sh

New server-free tests cover the legacy return lap and a full banded traversal
with crops continuously regrowing behind the bot.

## What Toolmode routes now run as finite laps instead of a continuously re-ranked harvest queue. - A lap snapshots the ripe crops present when it starts. Regrowth behind the bot cannot extend the committed route or turn it around. - Crops already confirmed in the current lap are skipped by the opportunistic sweep until the return leg or the next lap. Fast server regrowth no longer keeps re-feeding the same tiles. - After the final banded pass or legacy route, the bot walks back to the lap's start position, still swinging at anything within reach on the way, then immediately starts the next lap from current growth. - Finishing a lap counts as a completed pass: `farm-loop` continues without waiting for the whole plot to be empty, while a one-pass job stops after the lap. - A banded pass exit no longer waits for opportunistic swings to confirm, so a steady stream of regrown crops cannot pin the route at the pass boundary. Both the banded coverage route and the sparse/irregular per-tile route use the same lap/return behaviour. ## Validation - `./scripts/ci-preflight.sh` - `./gradlew --no-daemon --max-workers=1 '-Dorg.gradle.jvmargs=-Xms128m -Xmx1g -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8' lint build` - `./gradlew ... test --rerun-tasks` - `./scripts/check-release-jar.sh` New server-free tests cover the legacy return lap and a full banded traversal with crops continuously regrowing behind the bot.
fix: repeat toolmode laps without chasing fast regrowth
All checks were successful
build / Java 25 build (pull_request) Successful in 3m29s
51881a22f0
A toolmode lap now owns only the crops that were ripe when it started.
Regrowth behind the bot can no longer extend the committed route or pull
it backwards; cells already confirmed during the lap are deferred until
the return walk or the next lap. When the final pass ends, the bot walks
back to the lap's start position, still swinging at reachable crops, and
immediately starts the next lap from current growth. Finished laps count
as completed passes, so farm-loop continues while one-pass jobs stop.

Banded pass exits also no longer wait on opportunistic swings, which
kept very fast regrowth from pinning the route at a pass boundary.
gecko merged commit e47eef5274 into main 2026-11-03 20:45:08 +00:00
gecko deleted branch t3/toolmode-harvest-loop 2026-11-03 20:45:08 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
gecko/mcbot!106
No description provided.