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>
3.3 KiB
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'scombine()doesn't passplanetintosimulate()yet (environment-extra construction materials,puga/planet.py::environment_extras()) -whatif.py/buy.py/scan.pyalready do.tools/arb.py: inter-CX arbitrage at real fill size (replacesprun_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)
scan.pypayback ignores working capital (input stock/output inventory/consumables) - can rival building capex for smelting-type recipes.buy.pyalready computes this number.- No profit/permit ranking (permits bind at the base level, not per-recipe) - needs
tools/portfolio.py's cross-recipe/whole-base view. scan.pydoesn't charge degradation (capex/180/day) likesimulate.pydoes - small but real inconsistency between tools ranking the same thing.- 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.
persistence.py --lag 3default is too low givendocs/mechanics.md's weekly workforce distribution - real lag is 3-10 days.- 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 whetherpersistence.py/undervalued.pyactually do this. undervalued.py's backtest (+21.3%/3mo) has no control group - meaningless without the universe's unconditional return over the same window.persistence.pymeasures 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).undervalued.py::manufacturing_candidates()keeps the first recipe seen per output, not the cheapest (seen.setdefault).scan.pyhab cost ignores combined habs (HBB/HBC/HBM/HBL), which can be cheaper per head.scan.py --trip-coststill defaults to the flat 9250 placeholder despite the realpuga/shipping.pymodel existing and already used bywhatif.py.sell.py'ss0is the day's VWAP, not its high ---tierstouch probability is slightly pessimistic (same discretization conservatism asempirical_touch(), seedocs/decisions.md).empirical_touch()'s optionalhorizon(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.jsonhas no securitySchemes.