Files
PuGa/docs/roadmap.md
T
dodoxandClaude Sonnet 5 7a538cb300 Initial PuGa toolkit: data layer, econ, depth-aware scan, state sync, plan push
- puga/: cached FIO + PRUNplanner clients, market view with order-book walk,
  econ formulas ported from PRUNplanner (tested against its suite and live FIO),
  saturation model v1 (reviewed by Opus)
- tools/: scan (depth-aware), price, book, chain, state sync, plan_push
  (dry run default, [PuGa]-prefixed plans only), legacy prun_scan/prun_cxarb
- docs/: mechanics (PRUNplanner is source of truth), roadmap, decisions,
  saturation design, archived handoff
- secrets stay in .env (gitignored); ref/ holds PRUNplanner source (ignored)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 23:00:21 +02:00

3.0 KiB

Roadmap

Legend: [ ] todo, [x] done. Build order matters; each step is usable on its own.

  1. Repo skeleton, git (master), venv, CLAUDE.md, mechanics from PRUNplanner.
  2. puga/fio.py: cached FIO client (TTL per endpoint, keys from .env), plus puga/prunplanner.py for api.prunplanner.org/data/*. Inspect what exchanges/ adds (VWAP?) vs FIO /exchange/all.
  3. (price + book tools done; cxpc trend history not needed, PRUNplanner has vwap7/30) puga/market.py + tools/price.py, tools/book.py: prices across all CX, trends from cxpc, order-book walk for real fill price at quantity N.
  4. puga/econ.py (22 tests pass, expected values from PRUNplanner's suite): efficiency stack, workforce consumption, hab LP, extraction (port the formulas from docs/mechanics.md, with tests against PRUNplanner values).
  5. (v1 done; see saturation-design.md for refinements) tools/scan.py (replaces prun_scan.py): depth-aware ROI. Per recipe report: buildings the market can absorb (output demand + traded volume, input supply), ROI at fill price for N buildings, absorbable profit/day. Filter --min-buildings. Both CX-local and universe. 5b. [ ] tools/arb.py (replaces prun_cxarb.py): inter-CX arbitrage on market.walk at real fill size; capital required, fuel/shipping cost from state, profit per trip within cash. Reason: old script uses top-of-book spread x min(supply,demand); on 2 of 4 top hits it overstated profit 7 to 11x (WAI, SCN).
  6. tools/chain.py: full bill of materials, make-vs-buy per node.
  7. tools/whatif.py: marginal ROI of adding a building to the actual state (uses state/company.yaml, efficiency stack, imports).
  8. tools/planet.py, tools/found.py: rank planets for a resource; founding cost including environment extras.
  9. tools/route.py, tools/haul.py: jump graph, fuel, profit per trip. 9b. [x] (dry-run default, --apply after user yes) tools/plan_push.py: create/update [PuGa] plans in PRUNplanner from YAML (Api-Key auth; see decisions.md for guardrails).
  10. tools/state.py sync (sites, production efficiency, storage, ships, cash, permits): inventory, production, ships into state/.
  11. Docs to fill: docs/apex.md, docs/fio.md, docs/playbook.md (question type -> tool), docs/decisions.md.

Open questions

  • PRUNplanner auth is known (Authorization: Api-Key <key>). FIO REST and FIO API are separate services with separate keys (Dominik; possibly separate accounts; my earlier "one API" reading was wrong). Keys are in .env. Verified 2026-09-18: FIO_REST_KEY works on rest.fnar.net as Authorization: <key> (own /sites, /storage etc. readable); FIO_API_KEY gives 401 there, host unknown. PRUNplanner key works (plans 0, empires 1, cx prefs 1 on his account). Still unknown: the OpenAPI spec at https://doc.fnar.net/api.json has no securitySchemes. Probe with read-only calls.
  • (resolved) PRUNplanner exchanges/ has vwap_daily/7d/30d and traded volume; merged into puga/market.py. Trend history via cxpc still todo.
  • Extraction: concentration to daily rate formula.