refactor: simplify open farming, integration CI and documentation #81

Merged
gecko merged 4 commits from t3/simplify-farming-ci-docs into main 2026-11-02 13:16:09 +00:00
Owner

Outcome and implementation plan

This implements the requested simplification around open, placement-only farms and removes the duplicated mining/repair architecture rather than tuning fixtures around it.

  • Audit the controller, farm/build observation layers, commands, workflows, fixtures and maintained documentation.
  • Replace the two build engines with one placement-only path above an unchanged, pre-cleared flat foundation. Remove cave excavation, pickaxe/mining logic, schematics and soil salvage/repair loops.
  • Preserve all five crops, initial gap filling, full-plot strip → collect → replant ordering, mid-sweep logistics, growth loops, fixed chunk geometry and old square profiles.
  • Share crop identity, reversible settings, non-destructive movement leases, bounded travel recovery and detached container snapshots. Verify every transferred item independently on both sides of a reopened chest visit, rather than accepting aggregate crop totals.
  • Keep covered-water drops in completion checks and approach them from adjacent soil; fix pickup recovery timing to be independent of observation cadence. Check supplies at new growth-wave entry and collect drops during growth waits.
  • Consolidate crop command grammar. Canonical commands are build and preview; retain build-farm/preview-farm aliases, remove redundant build-chunks/save-chunks and mining-oriented cave-wart. Omitted crops consistently mean wheat. Saving either layout validates geometry without imposing job-inventory checks.
  • Refactor integration architecture: one JSON case catalog, sequenced single-flight farm/build handshakes, shared client cleanup contracts and health-aware RCON/supervisor infrastructure. Remove repeated fixture healing, use sealed/lighted/count-checked reference worlds and bounded read-only assertion settling.
  • Keep the isolated native dependency probe and independently verify its cleanup, geometry and supplies, but do not require a dependency bug to reproduce in one exact way for the release to proceed. The actual full-size addon harvest still must pass.
  • Preserve sequential suites and stable-release full-suite gating. Give preparation and sections a shared execution deadline with diagnostic headroom. Strip workflow tokens from project preflight/check/build steps.
  • Stop per-packet farming warnings and per-cell builder console chatter. Failure-console output is globally capped at 300 lines/40,000 characters; retain full evidence and Checkstyle/JUnit reports in artifacts, prioritizing the failing section.
  • Rewrite README requirements/usage, reduce AGENTS.md to development contracts, delete IMPLEMENTATION_PLAN.md and the stale farm report generator, and merge CI_RUNNERS.md into CI.md. Keep only CI, Prism and release guides in docs/.
  • Explicitly allow resource-bounded local compilation/lint/build/unit/script checks and require them before pushing. Keep real Minecraft/integration launches CI-only and a green Forgejo build mandatory before merging.

Build/fixture contract changes

Public construction remains fixed at 32×32 with a 30×30 inset. It places soil one block above the supplied foundation and never mines or scaffolds. Hydrated builds require 1008 dirt, 900 planting items, 16 water buckets, 16 white carpets, and at least two hoes totaling 884 remaining uses. Wart requires 900 soul sand, 124 dirt and 916 wart. No pickaxe is required or withdrawn. Failure leaves partial placements, not rollback/resume.

Coverage is adapted to those supported contracts, not removed indiscriminately:

  • Full 9×9 hydrated/wart construction, 884-/900-cell chunk construction, standalone 900-cell farming, handoff/later harvest, material rejection and both crop types' Stop/deactivation checks remain.
  • Obsolete cave/rough-terrain cases are replaced by representative open wheat/wart builds. Unbreakable foundation preservation is covered by open wheat on bedrock; tool replacement uses a one-use hoe plus its spare. Pickaxe-break assertions are obsolete because construction cannot mine. A pickaxe stays in supply as an unrelated-item sentinel.
  • Full-volume reference comparisons include every foundation, ring, crop, headroom and exterior cell except legitimate chest contents. Crop counts, inventory/chest conservation, scoped-drop cleanup and process/settings/input/menu cleanup remain independent assertions.
  • The existing potato fixture now checks both rim and covered-water byproducts instead of adding another whole case. Boundary logistics, all crops, growth and harvest-order fixtures remain.
  • build-small replaces the misleading build-legacy CI preset. Targeted validation remains explicitly distinct from full-suite evidence.

Validation

  • Local Gradle lint build passed, with one worker and a 1 GiB Gradle heap: 146 Java tests, zero failures/errors/skips.
  • Local scripts/ci-preflight.sh passed: 76 server-free script tests, wrapper/syntax/metadata checks. Local scripts/check-release-jar.sh and git diff --check passed.
  • The item-stack unit fixtures explicitly bind their tested 26.3 components without a resource reload, client or server. The real packet-copy and component-aware capacity assertions remain covered; no runtime fallback or disabled test was introduced.
  • PR build CI is required: mandatory Java lint, compilation, Java unit tests, server-free script/fixture contracts and jar boundaries. Build result/run link will be recorded below or in a PR comment.
  • Integration tests are deliberately not dispatched or run for this change, as requested. Another agent will perform real-client validation. No performance benchmark or live-server reliability claim is made from a green build alone.
## Outcome and implementation plan This implements the requested simplification around **open, placement-only farms** and removes the duplicated mining/repair architecture rather than tuning fixtures around it. - [x] Audit the controller, farm/build observation layers, commands, workflows, fixtures and maintained documentation. - [x] Replace the two build engines with one placement-only path above an unchanged, pre-cleared flat foundation. Remove cave excavation, pickaxe/mining logic, schematics and soil salvage/repair loops. - [x] Preserve all five crops, initial gap filling, full-plot **strip → collect → replant** ordering, mid-sweep logistics, growth loops, fixed chunk geometry and old square profiles. - [x] Share crop identity, reversible settings, non-destructive movement leases, bounded travel recovery and detached container snapshots. Verify every transferred item independently on both sides of a reopened chest visit, rather than accepting aggregate crop totals. - [x] Keep covered-water drops in completion checks and approach them from adjacent soil; fix pickup recovery timing to be independent of observation cadence. Check supplies at new growth-wave entry and collect drops during growth waits. - [x] Consolidate crop command grammar. Canonical commands are `build` and `preview`; retain `build-farm`/`preview-farm` aliases, remove redundant `build-chunks`/`save-chunks` and mining-oriented `cave-wart`. Omitted crops consistently mean wheat. Saving either layout validates geometry without imposing job-inventory checks. - [x] Refactor integration architecture: one JSON case catalog, sequenced single-flight farm/build handshakes, shared client cleanup contracts and health-aware RCON/supervisor infrastructure. Remove repeated fixture healing, use sealed/lighted/count-checked reference worlds and bounded read-only assertion settling. - [x] Keep the isolated native dependency probe and independently verify its cleanup, geometry and supplies, but do not require a dependency bug to reproduce in one exact way for the release to proceed. The actual full-size addon harvest still must pass. - [x] Preserve sequential suites and stable-release full-suite gating. Give preparation and sections a shared execution deadline with diagnostic headroom. Strip workflow tokens from project preflight/check/build steps. - [x] Stop per-packet farming warnings and per-cell builder console chatter. Failure-console output is globally capped at 300 lines/40,000 characters; retain full evidence and Checkstyle/JUnit reports in artifacts, prioritizing the failing section. - [x] Rewrite README requirements/usage, reduce AGENTS.md to development contracts, delete IMPLEMENTATION_PLAN.md and the stale farm report generator, and merge CI_RUNNERS.md into CI.md. Keep only CI, Prism and release guides in docs/. - [x] Explicitly allow resource-bounded local compilation/lint/build/unit/script checks and require them before pushing. Keep real Minecraft/integration launches CI-only and a green Forgejo build mandatory before merging. ## Build/fixture contract changes Public construction remains fixed at 32×32 with a 30×30 inset. It places soil one block above the supplied foundation and never mines or scaffolds. Hydrated builds require **1008 dirt, 900 planting items, 16 water buckets, 16 white carpets, and at least two hoes totaling 884 remaining uses**. Wart requires **900 soul sand, 124 dirt and 916 wart**. No pickaxe is required or withdrawn. Failure leaves partial placements, not rollback/resume. Coverage is adapted to those supported contracts, not removed indiscriminately: - Full 9×9 hydrated/wart construction, 884-/900-cell chunk construction, standalone 900-cell farming, handoff/later harvest, material rejection and both crop types' Stop/deactivation checks remain. - Obsolete cave/rough-terrain cases are replaced by representative open wheat/wart builds. Unbreakable foundation preservation is covered by open wheat on bedrock; tool replacement uses a one-use hoe plus its spare. Pickaxe-break assertions are obsolete because construction cannot mine. A pickaxe stays in supply as an unrelated-item sentinel. - Full-volume reference comparisons include every foundation, ring, crop, headroom and exterior cell except legitimate chest contents. Crop counts, inventory/chest conservation, scoped-drop cleanup and process/settings/input/menu cleanup remain independent assertions. - The existing potato fixture now checks both rim and covered-water byproducts instead of adding another whole case. Boundary logistics, all crops, growth and harvest-order fixtures remain. - `build-small` replaces the misleading `build-legacy` CI preset. Targeted validation remains explicitly distinct from full-suite evidence. ## Validation - Local Gradle **`lint build` passed**, with one worker and a 1 GiB Gradle heap: **146 Java tests, zero failures/errors/skips**. - Local `scripts/ci-preflight.sh` passed: **76 server-free script tests**, wrapper/syntax/metadata checks. Local `scripts/check-release-jar.sh` and `git diff --check` passed. - The item-stack unit fixtures explicitly bind their tested 26.3 components without a resource reload, client or server. The real packet-copy and component-aware capacity assertions remain covered; no runtime fallback or disabled test was introduced. - PR build CI is required: mandatory Java lint, compilation, Java unit tests, server-free script/fixture contracts and jar boundaries. Build result/run link will be recorded below or in a PR comment. - **Integration tests are deliberately not dispatched or run for this change, as requested.** Another agent will perform real-client validation. No performance benchmark or live-server reliability claim is made from a green build alone.
Merge remote-tracking branch 'origin/main' into t3/simplify-farming-ci-docs
Some checks failed
build / Java 25 build (pull_request) Failing after 2m50s
c4966f3933
# Conflicts:
#	README.md
#	docs/IMPLEMENTATION_PLAN.md
#	src/main/java/systems/gecko/mcbot/modules/BotModule.java
fix: use the imported Meteor setting type
Some checks failed
build / Java 25 build (pull_request) Failing after 2m58s
ef1e9778e8
Author
Owner

Build-only validation update: run 808 on c4966f3 passed all 76 server-free script contracts and successfully compiled both main and test Java sources. It stopped on one mandatory Checkstyle finding in SettingLease.java (an unnecessary fully qualified type). Fixed in ef1e977; the PR build will validate that head. Integration tests remain deliberately unrun and undispatched, as requested.

Build-only validation update: [run 808](https://git.glitched.systems/gecko/mcbot/actions/runs/808/jobs/0) on `c4966f3` passed all 76 server-free script contracts and successfully compiled both main and test Java sources. It stopped on one mandatory Checkstyle finding in `SettingLease.java` (an unnecessary fully qualified type). Fixed in `ef1e977`; the PR build will validate that head. Integration tests remain deliberately unrun and undispatched, as requested.
fix: validate item fixtures locally before pushing
All checks were successful
build / Java 25 build (pull_request) Successful in 3m56s
7e019c7cc4
Author
Owner

Validated locally before pushing 7e019c7: resource-bounded Gradle lint build passed (146 Java tests; zero failures, errors or skips), scripts/ci-preflight.sh passed (76 server-free tests), jar-boundary verification and git diff --check passed. Fixed the 26.3 item-component bootstrap only in unit fixtures and added a real packet snapshot aliasing assertion; no runtime workaround or skipped test. AGENTS.md, README and CI guidance now explicitly permit local compilation/lint/tests and require local validation before pushing. No Minecraft/integration run was launched or dispatched. Awaiting the PR build before merging.

Validated locally before pushing `7e019c7`: resource-bounded Gradle `lint build` passed (146 Java tests; zero failures, errors or skips), `scripts/ci-preflight.sh` passed (76 server-free tests), jar-boundary verification and `git diff --check` passed. Fixed the 26.3 item-component bootstrap only in unit fixtures and added a real packet snapshot aliasing assertion; no runtime workaround or skipped test. AGENTS.md, README and CI guidance now explicitly permit local compilation/lint/tests and require local validation before pushing. No Minecraft/integration run was launched or dispatched. Awaiting the PR build before merging.
Author
Owner

Build-only validation is green on 7e019c7cc4f35854cad4dfc6643662fe6d01904f: Forgejo build 810 passed. Local validation before the push also passed: Gradle lint/build with all 146 Java tests, all 76 server-free script tests, jar boundaries and diff checks. No integration workflow was dispatched or executed; real-client validation remains deferred to the other agent. Merging under the requested build-only approval policy.

Build-only validation is green on `7e019c7cc4f35854cad4dfc6643662fe6d01904f`: [Forgejo build 810](https://git.glitched.systems/gecko/mcbot/actions/runs/810/jobs/0) passed. Local validation before the push also passed: Gradle lint/build with all 146 Java tests, all 76 server-free script tests, jar boundaries and diff checks. No integration workflow was dispatched or executed; real-client validation remains deferred to the other agent. Merging under the requested build-only approval policy.
gecko merged commit fa13041c2c into main 2026-11-02 13:16:09 +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!81
No description provided.