Skip to content

[Compatibility] Audit and expand deterministic support for ATM10 1.21.1 #33

Description

@swear01

Goal

Use the current All the Mods 10 1.21.1 pack as a real compatibility target, then add source-audited Auto Storage modules for deterministic recipe families that fit the existing server-authoritative transaction contract.

This is not a promise to support every ATM10 mod automatically. Unknown, probabilistic, world-state, entity, multiblock, or external-machine send-and-wait behavior remains fail closed.

Baseline snapshot

Audited on 2026-07-30 from the official AllTheMods/ATM-10 repository:

  • pack line: ATM10 1.21.1; current CurseForge release shown as 7.2;
  • official repo commit: 4e7dac2a8f1aa75ce90ffcf4bfede70db8661d10 (2026-07-20 chore: modlist);
  • config/crash_assistant/modlist.json: 481 loaded entries;
  • NeoForge: 21.1.241.

Representative versions are audit/CI evidence only. They are not player-facing exact dependency pins and do not create a multi-version matrix.

Already covered in ATM10

Auto Storage already has isolated modules/fixtures for Mekanism, Botania, Create, Farmer's Delight, Iron Furnaces, Modern Industrialization, Ars Nouveau, EvilCraft, Powah, Industrial Foregoing, and Extended Crafting. Vanilla exact recipe classes remain zero-configuration regardless of recipe namespace.

Candidate inventory

Tier A — audit first

These appear most likely to expose deterministic, bounded recipes that can use the public addon SDK, but each still requires source/API proof and RED behavior tests before acceptance:

  • Applied Energistics 2 19.2.17
  • Oritech 1.2.9
  • Theurgy 1.73.1
  • Productive Metalworks 1.15.0
  • XyCraft Machines 0.7.53
  • Integrated Dynamics / Integrated Crafting 1.33.3 / 1.4.6

Tier B — mixed safe/unsafe families

Audit family by family; accept only complete deterministic subsets:

  • Ender IO 8.2.11-beta
  • Immersive Engineering 12.4.2-194
  • Actually Additions 1.3.26
  • Railcraft Reborn 1.2.10
  • Hostile Neural Networks 6.5.0
  • Productive Bees 13.13.5

Expected interop/fail-closed boundaries

  • Occultism rituals, entity/world operations, free-form multiblocks, and similar live-world systems are not converted into synthetic recipes without a complete transaction contract.
  • Extreme Reactors, generators, Flux Networks, RFTools infrastructure, storage mods, and AE2/RS2 network blocks are capability/interoperability audits rather than recipe-family candidates by default.
  • Mystical Agriculture and other mods using exact vanilla crafting/smithing/cooking classes need no custom module for those recipes.
  • Chance outputs are accepted only when the loaded recipe resolves to a guaranteed deterministic subset; otherwise the family remains unsupported.

First implementation slice — AE2 Inscriber

AE2 source tag neoforge/v19.2.17 provides a concrete first target:

  • exact class/type: InscriberRecipe / AERecipeTypes.INSCRIBER;
  • station: AE2 Inscriber;
  • middle input is consumed;
  • INSCRIBE retains non-empty top/bottom inputs;
  • PRESS consumes non-empty top/bottom inputs;
  • one exact item output;
  • baseline processing is 200 steps at 10 AE per step;
  • runtime AE-to-FE conversion must be read from AE2's public PowerUnit contract and accepted only when it can be represented exactly by Auto Storage's integer energy ledger;
  • speed-card variants are not inferred from an unconfigured station ItemStack;
  • Charger is not included in this slice: its block entity uses probabilistic completion timing and also supports manual crank power, so an exact work/cost contract must be designed before support.

Implementation rules

  1. Finish and land [API/Architecture] Modular compatibility SDK and conditional built-in modules #32 first; new integrations must dogfood the public modular SDK and must not reintroduce core dispatch edits.
  2. One isolated src/compat/<mod-id> source set per target, compiled only against the API artifact plus that target/required companions.
  3. Add one representative present-mod fixture with real recipe assertions, absent-mod base coverage, and all-mod matrix coexistence.
  4. Strict TDD: unsupported fixture first, confirm expected RED, then smallest production module.
  5. Preserve exact components, catalysts, remainders, typed resources, multi-output merge, capacity simulation, rollback, and current-holder identity.
  6. Register only complete recipe families. No serializer-name, EMI widget, generic Recipe#getIngredients(), reflection, or machine-name inference.
  7. Update the target compatibility document, addon/module inventory, CI/release gates, and test counts in the same change.
  8. Do not add optional-mod multi-version matrices or exact player dependency pins.

Acceptance criteria for each target module

  • Official source/API audit records recipe class/type, station, exact inputs/outputs, catalyst/remainder behavior, energy/work rate, and rejected families.
  • Different target absent: no entrypoint classloading and base dedicated GameTest stays green.
  • Target present: module loads once and executes real recipe behavior assertions.
  • Shortage, full destination, long overflow, stale holder, and mixed-resource rollback remain atomic.
  • All-mod compatibility matrix detects registry/classpath conflicts.
  • API/compat bytecode isolation gates remain green.
  • No GUI scenario is added unless the module introduces a player-visible resource, station presentation, or renderer that cannot be validated automatically.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions