Fright's Delight jar-in-jars MidnightLib 1.9.2, whose MidnightConfig.init races during NeoForge parallel mod construction (ConcurrentModificationException). The broken mod state left mod_resources unloaded, so WATUT's reloadShaders mixin crashed on particle.json - WATUT was the victim, not the cause. 1.10.0 synchronizes the entries map (upstream 1fe69729); FML selects it over the JiJ copy. Verified: 10/10 clean cold launches to world join. Also adds analysis/state/ (Phase 2 state capture).
4.6 KiB
4.6 KiB
Pack and environment
The pack
- Onion MC — curated NeoForge modpack managed with packwiz; MC 1.21.1,
NeoForge 21.1.251, 217 mods at HEAD
e5e369a. - The repo doubles as the dedicated-server directory (
/home/logan/onion-mc). The live server runs from here (see03-current-state.md).world/,libraries/,logs/,crash-reports/,*.jarare.packwizignored — never blanket-un-ignore. - Remote:
ssh://git@git.ljones.me:2222/logan/onion-mc.git, branchmain. - Conventional Commits, imperative subject, body explains why. Don't commit or push unless asked / plan calls for it.
- packwiz lives at
~/go/bin/packwiz(buildef87d96). On this machine it is on PATH. - Config shipping is opt-in:
.packwizignoreignoresconfig/*; shipping a file needs a negation at the bottom of.packwizignore(last match wins; negations must not end in/or packwiz SkipDirs the parent). - Hand-set
side = "server"on petprotect, c2me-neoforge, noisium is silently reset by bulkpackwiz update(single-mod update is safe). - Tuned defaults ship via the Default Options mod (
config/defaultoptions/), copy-if-absent → reaches fresh installs only. Change values only throughanalysis/client-perf/proposed-configs/build.py, never by hand-editing outputs. .pi/andanalysis/are packwizignored — safe to commit to git, never shipped to players.
This machine — the Phase 2 "proxy" bench box (Manjaro)
The three fleet machines (Steam Deck, 7700K/1060, 6700K/1080 Ti — see phase0/) are
unreachable; all Phase 2 data so far is from this high-tier proxy. Label all
results as proxy data: absolute FPS floors do not map to tier decisions.
| Item | Value |
|---|---|
| OS | Manjaro Linux, kernel 7.1.8 |
| CPU | AMD Ryzen 9 9900X, 12C/24T |
| GPU | AMD RX 7800 XT (DRI_PRIME=1 used in launch scripts) + Granite Ridge iGPU |
| RAM | 91 GB, no swap (good for p99 validity) |
| Disk | / 84% used, 140 GB free |
| Java | OpenJDK 21.0.12 at /usr/lib/jvm/java-21-openjdk |
| Display | Harness hardcodes DISPLAY=:1, XAUTHORITY=/run/user/1000/xauth_HvvPAq; runs must happen on the desktop session owning :1. X sockets X0/X1/X99 exist. |
| git / python | git 2.55.0, python 3.14.6 |
Tool and data paths on this machine
| What | Path |
|---|---|
| packwiz | ~/go/bin/packwiz |
Prism data dir (bench, launched with -d) |
~/onion-bench/prism |
| Bench Prism instance | ~/onion-bench/prism/instances/OnionBench |
| Instance game dir | .../OnionBench/.minecraft (provisioned; saves/onionbench 26 MB; Default Options seeded; BENCH_VARIANT.txt = C1 = last applied variant; MaxMemAlloc 8192) |
| Instance PreLaunchCommand | empty (intentional — no packwiz self-update mid-matrix, per BENCH-MATRIX §1) |
| Bench worldgen server | ~/onion-bench/server-bench (full NeoForge server; benchworld/ = the generated world source, 26 MB) |
| MangoHud | user-local build: ~/.local/mangohud, wrapper ~/.local/bin/mangohud-local (sets LD_PRELOAD shim, output_folder=~/onion-bench/mangologs, autostart, 1800 s cap, fps_limit=0, vblank off). System mangohud NOT in PATH. |
| MangoHud frametime CSVs | ~/onion-bench/mangologs/ |
| Harness results CSV | ~/onion-bench/harness-results.csv (append via run_scene.py --record) |
| Bench launch scripts | ~/onion-bench/launch-{bench,gui,online,xvfb,...}.sh (launch-bench.sh exports DISPLAY/XAUTHORITY/DRI_PRIME and launches OnionBench offline as user Tester) |
| Jar cache for jarscan | /tmp/onion/jars — currently absent (ephemeral). Refetch with analysis/audit/fetch.py only if re-running jarscan. |
| xdotool | /usr/bin/xdotool (present) |
Harness wiring (quick reference)
analysis/client-perf/harness/run_scene.py— apply variant → launch Prism into worldonionbenchunder MangoHud → drive scenes via xdotool → slice p50/p95/p99/ peak/1%-low from the MangoHud CSV. Constants:ROOT=~/onion-bench/prism,INSTANCE=OnionBench,GAME=$ROOT/instances/OnionBench/.minecraft,MANGOLOGS=~/onion-bench/mangologs,WORLD=onionbench. CLI:python3 run_scene.py --variant C1 --scene s1 [--warmup 15] [--capture 30] [--runs 1] [--record FILE] [--pre storm_on]. Scenes:s1 s2 s2s s3 s4 s5. Waits for "Sound engine started" in the instance log.--recordappends one CSV row.analysis/client-perf/harness/rcon.py— stdlib RCON client; args arehost port password command. No config file.analysis/client-perf/proposed-configs/apply_variant.py— applies variant<ID>fromproposed-configs/out/<ID>/into the game dir and writesBENCH_VARIANT.txt. Relaunch for every config change.