Skip to content

Preserve fluid temperatures across factory boundaries with ingredient pins #158

Description

@ApocDev

Problem

The block solver models fluid-temperature variants internally, but folds them to the base fluid name before persisting block boundary flows. Factory Scenario therefore treats all temperatures of a fluid as interchangeable. It can allocate scarce high-temperature supply to an unrestricted consumer or accept low-temperature supply for a strict consumer.

Direction

  • Let a user select Auto or an exact known compatible temperature on each recipe fluid ingredient.
  • Keep Factorio fluid prototypes canonical; temperature variants remain planner identities.
  • Preserve exact producer temperatures and consumer accepted ranges through cached block flows and composed/factory solves.
  • Compile qualified flows into exact variants and compatibility pools in the factory LP.
  • Keep supply priority behavior within compatible supplies.
  • Make the implementation generic for every temperature-sensitive fluid, not steam-specific.

Acceptance criteria

  • A consumer pinned to 250 C cannot be satisfied by 2000 C supply.
  • A consumer requiring 2000 C cannot be satisfied by 250 C supply.
  • An Auto consumer can use any recipe-compatible known temperature.
  • Temperature choices are filtered to the ingredient prototype range.
  • Existing blocks without selections retain Auto behavior.
  • Temperature identity survives saved block flows, composed blocks, Factory Scenario preview/apply validation, and supply-allocation reporting.
  • Main UI flow has E2E coverage and planner behavior has focused unit tests.
  • User and development documentation describe temperature selection and factory routing.

Follow-up to #110: in-block temperature identity exists, but its original factory-boundary scope is still folded away.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: plannerProduction block / planning modelarea: webWeb UI (React/TanStack/vite-plus)bugSomething isn't workingenhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions