ForgeFX Simulations
Engineering Readiness / 02 Oct 2026 HST
John Deere · Pico · ForgeBot

Fixes Are Small.
Build Environments Aren’t.

Keep diagnosis lightweight. Make full compilation a measured, repeatable route on a prepared build host—not a last-minute download onto a nearly full disk.

INCIDENT
Merged

The fix is included in current develop. Carl reports successful local compilation.

LOCAL DISK SNAPSHOT
23.52 GiB

Available on the Mac’s APFS Data volume. Too little for an unmeasured cold Unity setup under the proposed policy.

AUTONOMOUS VERIFICATION
Not Ready

The recovered checkout is sparse; the installed Editor differs from the project; Android support is absent from that install.

Recommendation: prepare a warm, dedicated TeamCity validation route first. Keep this Mac as the low-storage diagnosis and patch station. Add local compilation only after capacity, exact Editor version, dependencies and target support are proven.

1 / What The Question Actually Required

Isaac asked for the unused import to be removed, linted, compiled and committed to develop. Carl then specified a practical fallback: use the Unity Pipeline package and open locally if available; otherwise push a branch for him to merge.

What Happened

  • The earlier bot report identified CS0246 for PlasticGui in MotorGraderChallengeCompleteScreen.cs, line 6, on Pico builds #278 and #279.
  • The one-line import removal passed git diff --check. The bot reported no configured C# linter.
  • The attempted TeamCity personal-build patch hit the wrong repository in a multi-repository checkout; compilation did not start.
  • The fix was pushed as 43ff58e on fix/remove-unused-plasticgui-import.
  • Carl’s final reply: “Compiled locally and then merged.”

What Is Verified Now

  • The source thread was reread in full, including both linked questions and the closing reply.
  • GitHub reports develop at 1954b31fe4e42034a260707b0f816797cfbeefd3, two commits ahead of 43ff58e and zero behind. This independently confirms ancestry.
  • Local recovery checkout is clean at 43ff58e.
  • The historical build diagnosis and patch-routing failure are thread-reported; their original logs were not re-audited here.
  • No fresh Unity compile or current Pico CI result is claimed by this report.

Key distinction: whitespace validation is not linting; linting is not Unity compilation; Editor compilation is not a Pico player build or headset smoke test. Each needs its own evidence.

2 / Readiness Gaps, Not Just A Missing Package

Project version and installed Editor do not match.
The inspected project revision pins Unity 6000.3.5f2. The standard local Hub install contains 6000.5.2f1. Do not open the production project in the newer version as a shortcut: upgrades and serialization changes can create unrelated diffs.
The local checkout is deliberately tiny, not build-ready.
Its measured footprint is 7.2 MiB; sparse checkout includes only Assets/JohnDeere/Scripts/UI/SimulatorUI plus root files. Packages and ProjectSettings were inspected from Git objects, not hydrated working-tree directories. This footprint says nothing about the full project’s size. It is also in auto-pruned scratch storage, unsuitable as the durable build workspace.
Unity Pipeline needs an exact identity.
The inspected manifest and lockfile contain URP, Scriptable Build Pipeline and ForgeSim packages, but no dependency clearly identified as the automation package Carl named. URP is rendering, not an agent connection. Confirm the intended package ID, repository, compatible version and setup with Carl before installation. A name search is not proof that every possible integration is absent.
Pico needs more than an Editor executable.
The installed Editor’s sibling PlaybackEngines directory contains MacStandaloneSupport and WebGLSupport, not AndroidPlayer. A matching Editor, Android support, SDK/NDK/JDK, project XR configuration and build settings must be verified on the chosen build host.
Credentials and license readiness remain separate gates.
GitHub read access and Git LFS are working here. Private ForgeSim package resolution, a valid Unity license for the exact Editor and target signing must be checked without copying secrets into reports or logs.

Package and version findings are tied to the inspected fix revision; recheck the selected current commit before provisioning.

3 / Disk-First Capacity Plan

Measured on forgebot-mini: APFS Data volume had 24,663,776 KiB available (23.52 GiB), with df reporting 89% capacity. Only Macintosh HD appeared under /Volumes; no separate external work volume was mounted. These are point-in-time local measurements, not TeamCity-agent measurements.

Known Storage, Not A Deletion List

  • ForgeApps workspace: approximately 17 GiB.
  • Unity installations: approximately 13 GiB.
  • UnityProjects: approximately 8.0 GiB.
  • User .cache: approximately 3.4 GiB.
  • Library/Caches: approximately 317 MiB.
  • Hermes cache: approximately 107 MiB; npm cache: approximately 83 MiB.

These are rounded, focused probes, not a complete disk audit or reclaimable-space estimates. Active projects, installed tools and shared runtime caches must not be deleted merely because they are large.

Admission Budget

Required free = new downloads + checkout/LFS growth + package/import growth + peak build/temp growth + retained output + safety reserve

Calculate separately for every involved volume: source, Editor installation, package cache, temporary files, Gradle cache and output. Use measured cold-import and build peaks from a representative agent; do not estimate from Git repository size alone.

Proposed reserve: the larger of 30 GiB or 15% of the volume’s capacity, beyond predicted additional demand. This is a conservative starting policy, not a measured John Deere requirement.

Current decision: no cold local import. The Mac’s observed free space is below even the proposed minimum reserve. Do not clone all LFS content, install another Editor, or open the complete project until the budget passes. Tiny report and source inspections can continue.

During A Build

4 / If The Disk Is Already Full

01 — Stop growth. Suspend new jobs on the affected agent and cancel only the affected build gracefully. Record host, volume, free bytes, failing phase and revision. Do not launch a broad recursive scan or a full rebuild.
02 — Protect unique work. Check active processes, Git status and whether artifacts exist elsewhere. Keep source, uncommitted edits, .meta files, signing material, credentials and the last known-good deliverable. Store a compact incident note off the full volume if needed.
03 — Reclaim the cheapest safe space. Start with verified abandoned downloads, failed-job temporary outputs and expired copied artifacts. Then consider inactive regenerable build caches. Show exact paths, measured bytes and recovery cost before removing them. Moving to Trash on the same volume does not reclaim capacity.
04 — Avoid expensive “cleanup.” Do not blindly delete an active Unity Library, use git clean -xfd, prune unknown worktrees, purge shared package caches or run Git repacking near zero space. Deleting Library can make the next import larger and slower. Check open-deleted files and APFS snapshots if measured reclamation does not appear.
05 — Move or route elsewhere. If safe cleanup cannot satisfy the budget, use the prepared remote agent. For an external SSD, verify format, capacity, permissions and sustained I/O; copy with the Editor closed, verify hashes/counts, reopen and compile from the new location before retiring the original. Relocating only the project does not relocate every OS/package/temp cache.
06 — Resume only after proof. Remeasure live free bytes after reclamation settles, preserve the original failed log and restart only the affected job at the exact revision. Verify a complete compile/build result and publish evidence before marking recovery complete.

5 / Preferred Verification Architecture

LIGHTWEIGHT LOCAL LANE

Inspect → Patch → Review

Use Git/API metadata and targeted file reads. Keep a sparse source workspace, preserve the diff and exact base SHA, perform existing static checks and prepare a branch when requested. No asset hydration is needed merely to diagnose an unused import.

Do not invent a “compiler pass” from a standalone C# check: Unity assembly definitions, package dependencies and Android symbols can change the result.

WARM BUILD-HOST LANE

Import → Compile → Build

Use a dedicated persistent checkout on a correctly provisioned agent, with pinned dependencies and capacity admission. Preserve the expensive warm Library where valid. Match Pico target, scripting backend and symbols.

Prefer a verified feature-branch CI route. Repair personal builds only after checking the precise VCS root IDs, checkout rules and patch paths for every repository.

Package-independent fallback: a Unity automation package is convenient, not intrinsically required to compile. Supported batchmode can work after the exact project, license and toolchain are ready. Use the project’s established wrapper, clear NODE_OPTIONS, import/compile first, then run validation in a second invocation; inspect the full log and process exit status.

CI acceptance: queue the intended build configuration at the intended commit, read back every VCS revision, require compilation to actually start and finish, and attach logs/build IDs. A successful queue response or a green build of the wrong revision proves nothing about the patch.

6 / Next Steps In Order

P0 · ForgeBot + Carl — establish the exact contract.
Confirm the Unity Pipeline package identity and whether Carl wants it installed; identify the normal Pico validation configuration, authorized branch workflow and expected checks. Acceptance: one concise versioned setup record with Editor, package versions, command, target, build configuration and ownership.
P0 · ForgeBot + build-agent owner — measure capacity at the right place.
Read the selected TeamCity agent’s free space, checkout footprint, Library/package/cache sizes and recent build peaks. If those measurements cannot support the budget, free verified regenerable space or assign a larger SSD/agent. Acceptance: measured per-volume admission budget, not just “plenty of room.”
P1 · ForgeBot — prove a baseline before another incident.
Run an unchanged known-good revision through the chosen route and store compile/build evidence. Then test a small isolated branch through the same path. Acceptance: correct repository/revision, successful compilation and target build, with elapsed time and peak disk growth captured.
P1 · ForgeBot — remove repeated setup work.
Keep a durable source workspace outside auto-pruned scratch, a warm validation checkout, pinned toolchain and package lock, log retention and explicit output retention. Add a preflight disk check and an in-job disk guard; do not create a new unattended monitor as part of this report.
P2 · Engineering — add targeted prevention.
Review runtime code for accidental editor-only imports and assembly leakage. Consider a narrow check for prohibited namespaces outside Editor-only assemblies, with legitimate uses accounted for. Adopt a C# analyzer/linter deliberately rather than labeling whitespace checks as one.
P2 · Carl / target tester — close the device gap.
For behavior-affecting changes, retain a Pico smoke-test checklist and responsible tester. An Editor compile is a useful gate; it is not headset acceptance.

7 / Definition Of “Ready When Called”

Prepared by this task: source-thread reconstruction, live Git ancestry check, local toolchain/storage audit and this prioritized recovery plan. Not performed: deleting files, installing Unity/packages, changing CI configuration or running a new John Deere build.

8 / Evidence & Scope

Audit snapshot: 2026-10-03 05:34 UTC (October 2 HST). Readiness and storage change; rerun preflight when help is requested. Recommendations are proposed operating policy, not deployed controls.