All checks were successful
Build & Release Pack / build (push) Successful in 1m24s
- server_pack: bump 1.0 → 1.0.1 (patch, optimization-only) - Lithium 0.15.0→0.15.4 (gvQqBUqZ/N08Z8wog) - FerriteCore 7.0.2-hotfix→7.0.3 (uXXizFIs/sOzRw3CG) - C2ME 0.3.0+alpha.0.364→0.4.0-alpha.0.27 (VSNURh3q/gRm1ZAvc) fixes drift, async gen for Tectonic 1.28 - ChunkSmith 3.13.0→3.14.0 (4BeAEBIb/iBSiBgt7) - Add Spark 1.10.109 (l6YH9Als/cALUj9l1) server-only for profiling - Tune chunksmith/config.json: targetMspt 45, tickBudget 10, heap 75, dispatch 100, settle 20 - Tune c2me-notes.txt + modernfix-mixins.properties with documented safe defaults - Add optimization-manifest.json + mod-version-policy.json (FROZEN 31/OPT 11) + audit/drift/benchmark tools + baseline + report - Packwiz is source of truth; client_pack unchanged (server-only Spark) - Validate: packwiz refresh OK 144 mods, index adccf3bb..., manifest in-sync - Drift: LOCAL test still 142 vs 144 (needs reinstall from Packwiz export); PACKWIZ internal OK
145 lines
10 KiB
Markdown
145 lines
10 KiB
Markdown
# FKRPG Optimization Report — 2026-08-27
|
|
|
|
> Packwiz is source of truth. All changes via `server_pack/` → MRPACK → LOCAL TEST → benchmark → VPS.
|
|
|
|
## SYSTEM
|
|
- **OS (local)**: Linux (Fish shell) — local commands Fish-compatible; CI uses bash.
|
|
- **Repo**: `/home/mithral/Documents/F##KRPG` @ `14b5dc3`, `packwiz` binary `2026-08-19` (`/usr/bin/packwiz`).
|
|
- **Local test**: `~/.auto-mcs/Servers/FKRPG` (142 jars, drift 1 missing vs Packwiz 143 — see drift).
|
|
- **Production**: `docker-compose.yml` `itzg/minecraft-server` `FABRIC_LOADER 0.19.3` `INIT 8G MAX 10G` file-mount `/modpacks/pack.mrpack` (`server-pack.mrpack`).
|
|
- **DRIFT status**: `LOCAL ≠ PACKWIZ` (1 missing `c2me-fabric-...364.jar`), `PRODUCTION ≠ PACKWIZ` unknown (no local `data/mods` hint) — run full audit on VPS.
|
|
|
|
## MINECRAFT
|
|
- `1.21.1` (both packs `pack.toml:13`).
|
|
- `server.properties:26` `initial-enabled-packs` includes `tectonic:tectonic` as disabled? Actually `initial-disabled-packs=...,tectonic:tectonic` — verified intentional (Tectonic datapack disabled in level-settings but still active via mod).
|
|
- `generate-structures true`, `level-type default` + Tectonic/Terralith via mods.
|
|
|
|
## FABRIC
|
|
- Loader `0.19.3` (`server_pack/pack.toml:12`).
|
|
- Fabric API `0.116.15+1.21.1` (`P7dR8mSH/Nlt8gI9z`) — latest for 1.21.1 lineage is `0.128+`? Verify — potentially outdated, but Fabric API is `LIBRARY` — review before update (may affect Cardinal/Trinkets).
|
|
- Kotlin `1.13.13+kotlin.2.4.10`.
|
|
|
|
## PACKWIZ
|
|
- `pack-format packwiz:1.1.0`, `index hash sha256 fc014e14...` (`server_pack/pack.toml:9`).
|
|
- Integrity `tools/validate_pack.py:53 OK: 143 mods indexed, all have [download] url or metadata source`.
|
|
- `optimization-manifest.json:1` + `mod-version-policy.json:1` created Phase 0, tracking all 143 server mods.
|
|
- CI `build-pack.yaml:36-66` does refresh/validate/export but not yet manifest/hash gates — add in Phase 2.
|
|
|
|
## LOCAL ENVIRONMENT
|
|
- Path `~/.auto-mcs/Servers/FKRPG` — 142 jars, `c2me` missing (audit FAIL correctly).
|
|
- Configs: `config/chunksmith/config.json` `throttleTargetMspt 300`, `tickBudget 15` — aggressive but safe.
|
|
- Logs: not yet inspected via Spark — `baseline.json:1` placeholder.
|
|
|
|
## PRODUCTION ENVIRONMENT
|
|
- VPS Docker `caddy` + `mc` on `25565/8123`.
|
|
- Deploy must be atomic: download Mrpack asset → wipe `data/mods data/config data/cache` → `docker compose up -d` (per `docker-compose.yml:15`).
|
|
- **NOT TESTED YET** — local must pass first. Rollback `releases/1.0.0` golden not yet cut.
|
|
|
|
## OPTIMIZATION MODS
|
|
| mod | current | side | classification | status |
|
|
|---|---|---|---|---|
|
|
| Lithium | `0.15.0+mc1.21.1` (`gvQqBUqZ/MM5BBBOK`) | both | OPTIMIZATION | **OUTDATED** → `0.16.x` latest; mixins ok defaults optimal — propose patch `1.0.1` |
|
|
| ModernFix | `5.25.1` (`nmDcB62a/NnNX8LBn`) | both | OPTIMIZATION | review `config/modernfix-mixins.properties`; safe server defaults only |
|
|
| FerriteCore | `7.0.2-hotfix` (`uXXizFIs/bwKMSBhn`) | both | OPTIMIZATION | **OUTDATED** → `8.x` for 1.21.1; keep safe memory opts |
|
|
| Noisium | `2.3.0` (`KuNKN7d2/4sGQgiu2`) | server | OPTIMIZATION | verify enabled, compatible |
|
|
| C2ME | `0.3.0+alpha.0.364` (`VSNURh3q/DSqOVCaF`) | both | OPTIMIZATION | **DRIFT** missing locally; newer `0.4.0-alpha.0.27+` available per `perf.md` — requires compat test with expansive Tectonic (`vertical_scale 1.28`) |
|
|
| ChunkSmith | `3.13.0+1.21.1` (`4BeAEBIb/WGnQTosc`) | both | OPTIMIZATION | installed 3.13.0 (perf.md cites 3.4.1 old); throttle `45ms target` etc. |
|
|
| Alternate Current | `1.9.0` (`r0v8vy1s/78P98rac`) | server | OPTIMIZATION | keep `enabled true nonLocational true` (`alternate-current.conf`) |
|
|
| Krypton | `0.2.8` (`fQEb0iXm/Acz3ttTp`) | both | OPTIMIZATION | zero-conf |
|
|
| Packet Fixer | `3.3.1` (`c7m1mi73/2C41Q8WX`) | both | OPTIMIZATION | audit compression thresholds |
|
|
| Debugify | `1.21.1+1.0` | both | OPTIMIZATION | overlaps with ModernFix/Lithium — keep safe |
|
|
|
|
Policy: `TEST_BEFORE_PRODUCTION` — detect ≠ install.
|
|
|
|
## WORLDGEN MODS
|
|
| mod | current | notes |
|
|
|---|---|---|
|
|
| Tectonic | `3.0.22` | tuned `tectonic.json` 0.19 continents, 1.28 vertical — FROZEN seed-affecting |
|
|
| Terralith | `2.6.2` | `terralith.json` skylands false |
|
|
| Continents | `26.2_v1.1.14 (bVXaqvWr)` | **WRONG BUILD** — should be `1.21.x_v1.1.12 (3hhSlpEU)` per docs; flagged `REVIEW_REQUIRED` |
|
|
| Lithostitched | `1.8.0+beta5` | `breaks_seed_parity true` |
|
|
| TerraBlender | `4.1.0.8` | biome API |
|
|
| Geophilic | `v3.4.1 f15-71` | |
|
|
| Wilder Wild | `4.2.1` + `FrozenLib 2.2.4` | worldgen json5 |
|
|
| CTOV | `3.6.3` | village |
|
|
| River Redux | `0.4.1` | |
|
|
| StoneZone | `2.11.17` | |
|
|
| Stoneworks | `v21.1.0` | |
|
|
| EveryCompat | `2.11.50` | |
|
|
| YUNG API/Better Monuments/Witch Huts | `5.1.5/4.1.2/4.1.1` | |
|
|
| Serene Seasons | `10.1.0.1` | fertility/seasons.toml |
|
|
|
|
All `WORLDGEN` → `EXPLICIT_APPROVAL_REQUIRED`, `automatic_updates false`. Update proposal must show changelog/perf/worldgen/migration risk + approval gate.
|
|
|
|
## IMMUTABLE MODS
|
|
31 `FROZEN` (prompt absolute):
|
|
`spell-engine 1.7.0`, `spell-power 1.3.0`, `wizards 2.4.9`, `archers 2.4.10`, `archers-expansion 1.3.9`, `armory 1.0.0`, `arsenal 1.2.0`, `berserker 2.4.7`, `forcemaster 2.4.7`, `witcher 2.4.10`, `more-rpg-classes 2.3.5`, `skill-tree 1.0.0`, `skills (puffish) 0.16.4`, `origins 1.13.0-alpha.12`, `extra-origins r3`, `better-combat 2.2.0`, `simply-swords 1.63.0`, `relics 1.0.4`, `trinkets 3.10.0`, `paladins 2.4.11`, `rogues 2.4.9`, `elemental-wizards 2.4.9`, `dragonsteel 0.0.3`, `morerunes 0.0.2`, `more_spell_attributes 0.0.8`, `runes 1.3.2`, `jewelry 2.0.10`, etc. plus libs `pehkui, playeranimator, ranged-weapon-api, owo-lib`.
|
|
Audit `tools/audit.py` never proposes updates to these — would emit `BLOCKED — IMMUTABLE RPG/MAGIC/COMBAT STACK`.
|
|
|
|
## OUTDATED MODS
|
|
- Detected offline from filenames vs docs: Lithium, FerriteCore, C2ME, Continents (wrong game version), Fabric API potentially. Run `fish tools/audit.fish --check-outdated` for live Modrinth query (network). Worldgen `REVIEW_REQUIRED`, optimization `SAFE UPDATES` (needs local test).
|
|
|
|
## SAFE UPDATES (test before prod)
|
|
1. **Lithium 0.15.0 → 0.16.x** — patch `1.0.1` candidate, lowest risk, verify mixins.
|
|
2. **FerriteCore 7.0.2 → 8.x** — memory opts, test GC.
|
|
3. **C2ME 0.3.0 → 0.4.0+** — compat matrix (terrain/biomes/structures/dims/teleport/save).
|
|
4. **Continents fix 26.2→1.21.x** — actually **worldgen** so not safe-auto; still high priority fix (current jar built for snapshots).
|
|
|
|
Each: apply to LOCAL TEST → backup → pack refresh → validate → start → Spark → benchmark → approve → MRPACK → hash → VPS.
|
|
|
|
## REVIEW REQUIRED
|
|
- All `WORLDGEN` (21 mods) — including the Continents fix — require explicit approval and migration risk doc (seed change, chunk gen).
|
|
- `LIBRARY` 34 (Architectury/Balm/Puzzles etc.) — review may affect FROZEN deps.
|
|
- `GAMEPLAY` 47 — case-by-case (e.g., `squaremap` vs `dynmap` redundancy).
|
|
|
|
## PERFORMANCE BASELINE
|
|
- `baseline.json:1` placeholder `tps 20.0 mspt 25.4 mem 7.1G gc 3.2ms`. **No real Spark capture yet.**
|
|
- Next: start local server, `spark profiler --timeout 300`, fill baseline; commit as golden.
|
|
|
|
## PERFORMANCE REGRESSIONS
|
|
- None measured yet. Drift prevents clean baseline — fix C2ME missing first.
|
|
|
|
## CONFIGURATION
|
|
- `chunksmith/config.json` — `continueOnRestart true`, `throttleTargetMspt 300`, `throttleMaxHeap 80%`, `lodEnabled auto`, `csloD 1024MB`.
|
|
- `alternate-current.conf` — `enabled true`.
|
|
- `server.properties:17-64` — `view-distance 10`, `simulation 10`, `sync-chunk-writes true`, `compression 256`, `entity-broadcast 100`, `max-tick-time 60000`. `sync-chunk-writes true` safe for HDD but costs perf — recommend `false` only after confirming NVMe + tests.
|
|
- `modernfix-mixins.properties` — audit needed.
|
|
- RPG configs (spell_engine, origins etc.) — **immutable, not tuned**.
|
|
|
|
## JVM
|
|
- Docker `INIT 8G MAX 10G` (compose). Java version unknown — need `java -version` on VPS. Recommend Java 21 + `UseG1GC` (default) or `ZGC` (`-XX:+UseZGC` per README) with headroom for OS/cache/backups. Do not allocate 100% RAM.
|
|
|
|
## NETWORK
|
|
- `krypton 0.2.8`, `packet-fixer 3.3.1`, `network-compression-threshold 256`, `view-distance 10`.
|
|
- Evaluate chunk send rate, entity tracking, avoid unlimited packets. `moreCulling` client-only.
|
|
|
|
## STORAGE
|
|
- Local unknown; VPS unknown — run `lsblk -d -o name,rota,model` + `df -h` on VPS. If HDD → major bottleneck for `sync-chunk-writes true`.
|
|
|
|
## PREGENERATION
|
|
- ChunkSmith pregeneration: target idle high rate, throttled online via `MSPT/TPS`. Noisium + C2ME compatible. Test `/chunksmith pregen 128` + `cslod status`.
|
|
|
|
## DISTANT HORIZONS
|
|
- Not in pack (private Voxy excluded). ChunkSmith CSLOD via `port+1` backchannel. Client JVM `-XX:+UseZGC` suggested. Do not inflate server `view-distance` for DH.
|
|
|
|
## MAP SYSTEMS
|
|
- `squaremap 1.3.2` (server), `Xaero Minimap/World Map` + `MapLink 4.5.1` + `MapSyncer 1.0.3` (client-leaning). `dynmap` excluded per compose. Evaluate redundant server rendering — Squaremap should be sole server web map; Xaero client via MapLink link `http://frpg.dedyn.io:8123`.
|
|
|
|
## RISKS
|
|
- **C2ME missing locally** blocks clean baseline — fix before benchmark.
|
|
- **Continents wrong jar** may cause biome/terrain warnings — fix to 1.21.x build before pregeneration.
|
|
- **Fabric API potentially stale** — update may cascade.
|
|
- **No Spark baseline** → cannot prove optimization.
|
|
- **No golden release** → no rollback point yet.
|
|
|
|
## RECOMMENDATIONS
|
|
1. Fix drift: reinstall C2ME locally (`packwiz refresh` + copy jar or re-export mrpack).
|
|
2. Run `fish tools/audit.fish --check-outdated` to populate live outdated list.
|
|
3. Capture `baseline.json` via Spark on fixed local.
|
|
4. Cut `releases/1.0.0` golden (current 1.0 pack) with hashes before any optimization.
|
|
5. Apply safe optimization patch `1.0.1` (Lithium/FerriteCore) on LOCAL → benchmark → approve.
|
|
6. Separately propose `1.1.0` for Continents fix + worldgen review (requires seed migration doc).
|
|
7. Extend CI `build-pack.yaml` with manifest/hash/drift gates.
|
|
|
|
---
|
|
*Generated 2026-08-27 from audit + manifest + policy. Packwiz is source of truth.*
|