fix(mods): add MidnightLib 1.10.0 to fix startup CME crash
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).
This commit is contained in:
1 parent
e5e369a693
commit
a84319bb2f
11 files changed
+512
-1
No files matched your search
@@ -0,0 +1,75 @@
|
||||
# Remaining plan (with current status)
|
||||
|
||||
The authoritative run sheet is `analysis/client-perf/BENCH-MATRIX.md` — read it fully
|
||||
before benching. This file summarizes it, marks what's done, and adds proxy-machine
|
||||
notes. **Win** = median p99 improves by more than the machine's B0 noise spread AND
|
||||
1%-low does not worsen by more than the spread; ties keep upstream defaults.
|
||||
Floors (fleet): P0 1%-low ≥ 30, P1/P2 ≥ 60 — on this proxy, floors don't map; use
|
||||
relative wins only.
|
||||
|
||||
## Next actions, in order
|
||||
|
||||
1. **WATUT crash** (open): reproduce (repeated world loads in the OnionBench
|
||||
instance), capture a crash report, then fix via config/patch/retry. Owner says
|
||||
remove no mods. If unfixable, document a reliable workaround for bench runs.
|
||||
2. **Verify uncapped frametimes**: one `run_scene.py --variant C1 --scene s1` run;
|
||||
expect p99 well under 16.7 ms (vsync previously locked it). Do not proceed to B0
|
||||
until FPS is visibly uncapped.
|
||||
3. **Finish the bench world** (BENCH-MATRIX §2): build S4 — ONE Aeronautics ship
|
||||
(~5×7×15, planks+glass+1 propeller) hovering y≈170, copied via Create schematic to
|
||||
4 ships at z = 32/96/192/384; produce `bench-world-v1-s4-0/1/4.zip` copies.
|
||||
Verify S2 shafts rotate (re-place motors by hand if the `/fill` network didn't
|
||||
initialise) and S3 villager count. DH pregenerate per §2 step 5 (radius 256, tour,
|
||||
`generatorPlan=DISABLED` afterwards). Leave world at S1, save, zip as
|
||||
`bench-world-v1.zip` (record sha256).
|
||||
4. **Run the matrix** B0 → B1 → B2 → B3 → B4 → B6 → B7 → B8 → B9 → B10 → B11 →
|
||||
B12a → B12b → B13 → B14 (B5 deferred, fleet-only). Budget ≈25 h machine time.
|
||||
Apply variants with `apply_variant.py`; relaunch per config change; scenes in
|
||||
S1→S6 order per session; record with `--record`.
|
||||
5. **Ship**: write winners into `proposed-configs/build.py` (DEFAULT/DECK/HIGH layers),
|
||||
`build.py --ship`, `packwiz refresh`, commit (after `git checkout -- config/`).
|
||||
Ship `config/modernfix-mixins.properties` **only if B6 passes** (see the `SHIP`
|
||||
comment in `build.py`). New mod adds (B12b winners) ⇒ re-run B0 first.
|
||||
6. **Report to owner**: B7 shader-policy data, B12b trial verdicts, B14 spawn-tuning
|
||||
measurement, and any proxy-vs-fleet caveats.
|
||||
|
||||
## Matrix blocks (one line each; decision rules verbatim from BENCH-MATRIX §4)
|
||||
|
||||
| Block | Tests | Decision rule |
|
||||
| --- | --- | --- |
|
||||
| B0 | noise floor: C0 ×3 on S1 | defines each machine's win threshold; watch MemAvailable drift |
|
||||
| B1 | baseline: C0 on S1–S6 | reference numbers only (startup, atlas, heap summary, VRAM) |
|
||||
| B2 | composite: C1 / C1-deck / C1-high, all scenes | if C1 isn't a win on ≥2 machines, STOP and bisect via B3–B11 before shipping anything |
|
||||
| B3 | DH: radius ladder + SSAO/quality/threads | per tier: largest radius meeting the floor on S1+S5; SSAO-off on a win; threads stay 2 unless 4 wins S5 w/o losing S1 |
|
||||
| B4 | heap & GC: C1 × J0–J3, then heap 4/5/6 G | GC = best S5 1%-low; heap = smallest within winner's spread |
|
||||
| B5 | Sable/SSRD sub-levels + decay (**fleet P0/P1 only**) | SSRD = largest meeting floor with 4 ships; sable-noshade only on win + acceptable looks; decay beyond spread = report, no config fix |
|
||||
| B6 | ModernFix `dynamic_resources` | ship only if heap −300 MB or faster startup beyond spread AND zero missing textures AND 3 clean cold launches |
|
||||
| B7 | shaders ×4 profiles on S2/S1/S4 | **data for owner, no auto-decision**; verify Flywheel backends drop under shaders; watch Iris #3164 corruption |
|
||||
| B8 | entities: FA/Extensions, EMF LOD 20/8, LDL modes on S3 | smallest winning EMF LOD; cheapest winning LDL mode per tier |
|
||||
| B9 | Flywheel lightSmoothness flat/C1/smooth on S2 | smoothest value meeting the floor, per tier |
|
||||
| B10 | Sound Physics: spr-up/strict/nocap on S2s | adopt each winning change; listen for audio breakage |
|
||||
| B11 | vanilla/Sodium: threads 3, blend 0/2, mip 4 | adopt only wins (S5 + not losing S1; mip4 needs VRAM ≤ 5.5 GB on P1) |
|
||||
| B12a | added-mod ablation (BadOptimizations / Particle Core / Sodium Extra out) | keep unless removal wins or mod breaks something; Sodium Extra + RSO stay regardless |
|
||||
| B12b | trial mods (Gnetum, Better Block Entities, Flerovium, Super Resolution, Ixeris, Iris Flywheel Compat, Cull Leaves) | add only on win w/o breakage via `packwiz modrinth add`; **new mod set ⇒ re-run B0**; not More Culling (excludes 1.21.1) |
|
||||
| B13 | spark profile of worst B2 scene under C1 | flag any mod >5% of render-thread time that isn't Sodium/Iris/DH/Flywheel |
|
||||
| B14 | spawn tuning: defaults vs shipped, river/jungle/warm ocean ×10 min | keep if totals drop and every species still appears; back off if one effectively disappears (SPAWN-TUNING §B14) |
|
||||
|
||||
## Scenes and JVM sets (fixed inputs)
|
||||
|
||||
- **S1** vista (terrain + DH) · **S2** Create floor, 2304 kinetic BEs · **S2s** = S2 +
|
||||
24-sounds/tick storm · **S3** mob pen (30 villagers, allays w/ torches = moving LDL
|
||||
sources) · **S4** 0/1/4 Sable airship sub-levels · **S5** 24-teleport tour, 120 s,
|
||||
no warm-up discard · **S6** GUI/JEI overlay at S1.
|
||||
- **J0** phase0 G1 baseline · **J1** brucethemoose G1 · **J2** generational ZGC ·
|
||||
**J3** Shenandoah (plain; NOT `ShenandoahGCMode=iu` — aborts JDK 21). All parse-
|
||||
checked on OpenJDK 21.0.12. Default heap here: 8 G (instance), matrix suggests 6 G
|
||||
for P2 / 5 G for P0.
|
||||
|
||||
## Proxy-machine adaptations to document as you go
|
||||
|
||||
- B2's "≥2 machines" gate: run C1 vs C0 here; treat as single-machine evidence and
|
||||
mark fleet confirmation as pending.
|
||||
- B5 has no Sable-decay proxy path as specified — either adapt (4-ship scene exists
|
||||
once S4 is built) or record as deferred.
|
||||
- B4 heap ladder should use the instance's 8 G as the top rung.
|
||||
- Absolute floors (30/60 fps) are fleet values; use relative wins on this box.
|
||||
Reference in new issue
Block a user