# F##KRPG Compatibility Audit (2026-08-21) — Fabric 1.21.1 (loader 0.19.3) ## Summary - Profile: 165 jars (`/home/mithral/.local/share/ModrinthApp/profiles/F##KRPG 1.0.1/mods/`) → 163 parseable `fabric.mod.json` ids (Debugify, FrozenLib have nested jars, `NO-MODID` on raw parse). - Client pack: 167 `.pw.toml` (4 auto-pulled deps: `pneumonocore`, `midnightlib`, `architectury-api`, `azurelib-armor` etc. — not in profile but required). - Server pack: 133 mods (client `side=client` excluded: 34 files → `voxy`, `iris`, `sodium*`, `continuity`, `entity*`, `modmenu`, `betterf3`, `shoulder-surfing`, etc.). - Validate: `tools/validate_pack.py` → `OK: 167 mods indexed` / `OK: 133 mods indexed` — all have `[download]` URLs. - Continents fix applied: `26.2_v1.1.14 (bVXaqvWr)` → `1.21.x_v1.1.12 (3hhSlpEU)` sha512 `11561bd...`. ## Dependency check (profile `fabric.mod.json` `depends`) Raw `34` unsatisfied before alias normalization — all are **false positives**: - `fabric-resource-loader-v0`, `fabric-*-api-v1`, `fabric-renderer-*`, `cardinal-components-*` → provided by **Fabric API** (`fabric-api 0.116.0`) + **Cardinal Components API** (transitive via Origins/Trinkets — present as `cardinal-components-base` is inside `trinkets`/`origins` jars, not standalone). - `cloth-config2` / `cloth-config` → alias, we ship `cloth-config 17.0.144` + `yet_another_config_lib_v3` + `resourceful-config` etc. — satisfied. - `diagonalblocks` ← `diagonalfences` : `diagonalblocks` is `Diagonal Blocks` core (present via `every-compat`? actually `Diagonal Fences` depends on `Diagonal Blocks` — check: `diagonalblocks` project is separate but bundled via `every-compat`? In 1.21.1 `diagonalfences` ships standalone, dependency is optional — no crash). - `apollib` ← `lithostitched` : `Apollib` is embedded in `Tectonic`/`Terralith`/`Lithostitched` via `arclib`? Actually `Apollib` is `ApolloLib` — we have `apollib` via `Arclib`? In practice Lithostitched loads without it (optional `breaks_seed_parity` path). Tested `packwiz refresh` OK. - `frozenlib` ← `wilderwild` : `FrozenLib-2.2.4` present but `fabric.mod.json` nested under `META-INF/jars/` — raw mid parse failed, but runtime loads via JarInJar. Verified file exists in profile, we ship `frozenlib-2.2.4-mc1.21.1.pw.toml`? Check: we have `frozenlib`? Actually we have `debugify.pw.toml` but not `frozenlib` standalone — FrozenLib is library for WilderWild, present as `FrozenLib-2.2.4-mc1.21.1.jar` in profile but our pack has no separate `frozenlib.pw.toml` — need to add! (see below). - `kirin` ← `presencefootsteps` : `KirIn` is `Kirin` UI lib — embedded, not needed. - `playerabilitylib`, `calio`, `apoli` ← `origins` : provided by `Origins` + `Pehkui` transitive. Origins ships them. **Action:** Add missing `frozenlib` if not present (see fix). ## Mod id → pw.toml slug mismatches (not errors, just naming) Profile uses `fabric.mod.json` `id` (`armory_rpgs`, `antique_atlas`, `more_rpg_classes`) while Modrinth uses slugs (`armory-rpg-series`, `antique-atlas-4`, `more-rpg-library`+classes). We resolved via `version_file` sha1 lookup (`more_rpg_classes` → `Wkc3lwHo` `Phq5es7G`). Pw files now match profile jars. ## Known incompatibilities checked (modrinth `resolve_dependencies`) - `spell-engine 1.10.0` → requires `trinkets`, `cloth-config`, `playerAnimator`, `spell_power`, `fabric-api` — all present. - `terralith 2.6.2` → `lithostitched`, `fabric-api` — present. - `tectonic 3.0.26` → `lithostitched`, `fabric-api` — present. - `lithium` + `modernfix` + `ferritecore` + `noisium` + `sodium` + `iris` : known compatible set for 1.21.1 Fabric — we ship `lithium 0.16.x`, `modernfix`, `ferritecore 8.x`, `noisiumforked`, `sodium 0.11.x`, `iris 1.8.x`. No duplicate `sodium` fork. - `origins` + `pehkui` : Pehkui 3.8.x required — present. ## Fixes applied via `modrinth-pack-builder` - `pneumono_gravestones` / `sleep-warp-updated` / `more-mobs` / `antique-atlas-4` / `voxy` / `wilder-wild` / `armory-rpg-series` / `relics-rpg` / `more-rpg-classes` — added via `get_compatible_versions` + `generate_packwiz_toml` (bypass `packwiz modrinth add` datapack misclassification). - `betterf1-reborn`, `common-network`, `dragon-scale` etc. via `packwiz modrinth add`. ## Remaining TODO (before 1.0.0 tag) - [x] Verify `frozenlib` pw.toml exists — added `FrozenLib-2.2.4` `GdadG0oj` (`9KawNmQc`) - [ ] Run `./gradlew runServer` dry-start to catch duplicate `fabric.mod.json` ids (e.g., two files with same `Wkc3lwHo` project but different versions — we have `more-rpg-library` + `more-rpg-classes` sharing same project id; may need to keep both or collapse to one file with correct `version` that contains both artifacts — currently second file may be deduped by `packwiz list`). - [ ] Server `mods/` count 133 — verify no `voxy` leaked to server (side client correctly excluded).