Skip to content

Planner: support rate windows and low-throughput stock goals #10

Description

@ApocDev

Problem

Most planner quantities are currently entered and displayed as per-second rates. That is mathematically consistent, but it is awkward for common planning cases:

  • science targets are easier to think about as 5/min or 10/min
  • slow bootstrapping goals may be 1/hr or 0.5/hr
  • some goals are not really throughput targets at all; they mean "make sure this building or item chain exists somewhere so required intermediates are covered"

Desired behavior

Allow users to choose a time window/unit for rate goals instead of forcing per-second input everywhere. At minimum, support seconds, minutes, and hours. The solver can continue normalizing rates internally, but the UI should preserve the user-facing unit so saved goals remain understandable.

Examples:

  • 10 science/min
  • 5 science/min
  • 1 building/hr
  • 0.5 building/hr

Stock / coverage goal angle

There may be a better model for the "keep X buildings in stock / make sure required intermediates are being made" use case than pretending it is a tiny throughput. Consider a distinct goal type such as a coverage, bootstrap, or stock goal that expands required intermediates without implying a meaningful continuous production rate.

Questions to resolve:

  • Is this only a display/input unit preference, or should saved block goals store their selected rate window?
  • Should the solver keep one canonical rate unit and only convert at boundaries?
  • Do stock/coverage goals need separate semantics from normal output-rate goals?
  • How should mixed units appear in block summaries and assistant output?

Acceptance criteria

  • A user can enter and view goals in per-second, per-minute, or per-hour terms.
  • Existing per-second blocks continue to load and solve unchanged.
  • Saved goals remain understandable after reload, including their selected unit/window where applicable.
  • The low-throughput stock/coverage use case has an explicit design decision instead of being hidden as a magic tiny per-second rate.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: webWeb UI (React/TanStack/vite-plus)

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions