Files
PuGa/docs/roadmap.md
T
dodoxandClaude Sonnet 5 bf15c709ea Add planet environment-extra materials to capex calcs; buildcost.py tool
Every building needs a planet-hazard material bundle on top of its normal
BuildingCosts (SEA for low pressure, HSE for high pressure, MGC for low
gravity, BL for high gravity, INS for cold, TSH for heat - area-scaled
where applicable), confirmed against live in-game build panels on Nike.
FIO's own BuildRequirements field is an unreliable superset across hazard
types, not a direct per-building list - don't use it directly.

- puga/planet.py::environment_extras(): the real threshold table.
- tools/buildcost.py: full construction material list for one building,
  optionally on a given planet.
- Wired into whatif.py/buy.py (via simulate(planet=...)) and scan.py's
  own bcost(), so their capex numbers stop silently omitting this.
- docs/mechanics.md: the rule, plus a separate forum-sourced note on the
  CX order-cancellation penalty.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-17 19:03:51 +02:00

3.3 KiB

Roadmap

Open work only - what's already built/fixed is discoverable from CLAUDE.md's Tools list, docs/library.md, docs/decisions.md, and module docstrings, not repeated here.

Todo

  • tools/network.py/puga/network.py's combine() doesn't pass planet into simulate() yet (environment-extra construction materials, puga/planet.py::environment_extras()) - whatif.py/buy.py/scan.py already do.
  • tools/arb.py: inter-CX arbitrage at real fill size (replaces prun_cxarb.py, which overstated profit 7-11x on 2/4 top hits).
  • tools/haul.py: fuel cost / profit per trip (route.py has the jump graph).
  • tools/portfolio.py: profit-maximizing set of 1-building opportunities under shared housing/capex/permits. Ties into backlog #2 (profit/permit ranking, needs this tool to mean anything - permits bind at the whole-base level, not per-recipe).
  • Docs to fill: docs/apex.md, docs/fio.md, docs/playbook.md.

Backlog: review findings, still open (spot-checked against code)

  1. scan.py payback ignores working capital (input stock/output inventory/consumables) - can rival building capex for smelting-type recipes. buy.py already computes this number.
  2. No profit/permit ranking (permits bind at the base level, not per-recipe) - needs tools/portfolio.py's cross-recipe/whole-base view.
  3. scan.py doesn't charge degradation (capex/180/day) like simulate.py does - small but real inconsistency between tools ranking the same thing.
  4. No input-side flow cap (buying a big share of an input's flow should price-impact like selling output does) - documented as absent, not modelled.
  5. persistence.py --lag 3 default is too low given docs/mechanics.md's weekly workforce distribution - real lag is 3-10 days.
  6. Possible forward-fill bias if any tool reindexes daily_prices() onto a full calendar grid (it only emits trade days) - would understate volatility for sparse tickers. Not yet confirmed whether persistence.py/undervalued.py actually do this.
  7. undervalued.py's backtest (+21.3%/3mo) has no control group - meaningless without the universe's unconditional return over the same window.
  8. persistence.py measures past margin variance of a market we were NOT in - can't see the dominant real risk (our own entry + the next player's compressing margin).
  9. undervalued.py::manufacturing_candidates() keeps the first recipe seen per output, not the cheapest (seen.setdefault).
  10. scan.py hab cost ignores combined habs (HBB/HBC/HBM/HBL), which can be cheaper per head.
  11. scan.py --trip-cost still defaults to the flat 9250 placeholder despite the real puga/shipping.py model existing and already used by whatif.py.
  12. sell.py's s0 is the day's VWAP, not its high - --tiers touch probability is slightly pessimistic (same discretization conservatism as empirical_touch(), see docs/decisions.md).
  13. empirical_touch()'s optional horizon (fixed-window right-censoring) exists but isn't wired into any tool's default call yet.

Open questions

  • FIO REST and FIO API are separate services/keys (.env). FIO_REST_KEY works on rest.fnar.net; FIO_API_KEY's host is unknown; PRUNplanner's Api-Key works. doc.fnar.net/api.json has no securitySchemes.