Summary
Ran the TS bot LIVE on a fresh weekly reset (new agent UPRISING, HQ X1-SQ96, 175k cr, 2 ships: 1 FRIGATE + 1 PROBE). Despite extensive ops-level tuning, the bot never executed a single trade and stayed at ~68k credits. Multiple compounding bugs prevent greenfield bootstrap. Each is individually fixable; together they make a fresh agent dead-on-arrival.
Bugs found (in priority order)
1. OPERATING_RESERVE freezes all spending (CRITICAL, has ops workaround)
Default OPERATING_RESERVE=200000 + goods cushions → computed reserve 325,288 > 175,000 starting capital → bot refuses to buy ships OR trade (capital-preservation). Only free actions (contract mining) ran.
- Fix: reserve must scale to current credits (e.g.
min(OPERATING_RESERVE, credits*0.1)) or default low. Workaround that worked: OPERATING_RESERVE=5000 GOODS_CUSHION=2000 GOODS_CUSHION_PER_SHIP=1000 RESERVE_CONCURRENCY=1 → bot immediately began buying probes.
2. Phase engine routes greenfield → GATE_* instead of PROFIT (CRITICAL, no ops fix)
With an unbuilt gate present in-system, determinePhase() returns GATE_DISCOVERY / GATE_SUPPLY even at 68k credits. The bot does not run the profit trade loop in these phases. Even with GATE_SUPPLY=0 AUTO_EXPAND=0, it stayed in GATE_DISCOVERY and idled. A fresh low-capital agent must be in PROFIT (trade to build capital) until it can afford gate work.
- Fix: gate phases should be gated on capital/credit-floor, not merely gate-existence. Below a credit threshold, stay in PROFIT.
3. Trade dispatch never fires for a single trader (CRITICAL)
A genuinely profitable lane existed (LAB_INSTRUMENTS C40→A4, net 2,068/u × vol 20 ≈ 41k/trip, well above MIN_NET=500) with the markets priced in the DB, a capable cargo ship (FRIGATE cap 40), and capital — yet the frigate sat idle. Worker listed G-1 but emitted no trade action. (Related to #2 phase + possibly the ship being parked at a non-market asteroid.)
4. Mining yields nothing (the default starter contract path)
Bot accepted the starter PROCUREMENT contract (76 ALUMINUM_ORE) and sent the FRIGATE to an asteroid to mine. Frigate HAS MOUNT_MINING_LASER_II but produced 0 ore in 13+ min while cycling cooldowns; mine-events telemetry PUTs return 400 (contract mismatch, same family as the markets bug #8). The sole cargo ship was stuck on an impossible task. TRADE_FIRST=1 did not override the in-progress contract.
5. Ships default to DRIFT not CRUISE (greenfield speed killer)
With no known fuel markets at boot, ships navigate in DRIFT (e.g. 40–58 min for an intra-system hop) even when fuel is full (399/400). Seeding home markets (issue #16) gives fuel knowledge → should switch to CRUISE.
6. Home markets not eagerly mapped at boot (issue #16, confirmed)
Boot loads 0 markets; relies on the slow background crawler → 0 priced markets for a long time → no lanes. Manually seeding the home system's 26 markets (PUT /markets) immediately let the bot load them and scan-sweep. Should eager-fetch home-system waypoints+markets right after resolveHome().
Repro
Fresh-reset agent, docker compose --env-file deploy/bot.greenfield.env up. Observe: 0 trades, credits flat, frigate stuck mining 0 ore, phase GATE_*.
Minimum to make greenfield earn
Fix #1 (reserve scaling), #2 (phase capital-gating), #3 (single-trader dispatch). #4/#5/#6 are accelerators. Recommend a dedicated greenfield bootstrap path: eager-map home markets → CRUISE → PROFIT-trade the best lane with the starter ship → buy a 2nd trader → scale.
Related: #8 (markets write contract), #15 (large-fleet takeover), #16 (eager home-market bootstrap).
Summary
Ran the TS bot LIVE on a fresh weekly reset (new agent UPRISING, HQ X1-SQ96, 175k cr, 2 ships: 1 FRIGATE + 1 PROBE). Despite extensive ops-level tuning, the bot never executed a single trade and stayed at ~68k credits. Multiple compounding bugs prevent greenfield bootstrap. Each is individually fixable; together they make a fresh agent dead-on-arrival.
Bugs found (in priority order)
1. OPERATING_RESERVE freezes all spending (CRITICAL, has ops workaround)
Default
OPERATING_RESERVE=200000+ goods cushions → computed reserve 325,288 > 175,000 starting capital → bot refuses to buy ships OR trade (capital-preservation). Only free actions (contract mining) ran.min(OPERATING_RESERVE, credits*0.1)) or default low. Workaround that worked:OPERATING_RESERVE=5000 GOODS_CUSHION=2000 GOODS_CUSHION_PER_SHIP=1000 RESERVE_CONCURRENCY=1→ bot immediately began buying probes.2. Phase engine routes greenfield → GATE_* instead of PROFIT (CRITICAL, no ops fix)
With an unbuilt gate present in-system,
determinePhase()returns GATE_DISCOVERY / GATE_SUPPLY even at 68k credits. The bot does not run the profit trade loop in these phases. Even withGATE_SUPPLY=0 AUTO_EXPAND=0, it stayed in GATE_DISCOVERY and idled. A fresh low-capital agent must be in PROFIT (trade to build capital) until it can afford gate work.3. Trade dispatch never fires for a single trader (CRITICAL)
A genuinely profitable lane existed (LAB_INSTRUMENTS C40→A4, net 2,068/u × vol 20 ≈ 41k/trip, well above MIN_NET=500) with the markets priced in the DB, a capable cargo ship (FRIGATE cap 40), and capital — yet the frigate sat idle. Worker listed
G-1but emitted no trade action. (Related to #2 phase + possibly the ship being parked at a non-market asteroid.)4. Mining yields nothing (the default starter contract path)
Bot accepted the starter PROCUREMENT contract (76 ALUMINUM_ORE) and sent the FRIGATE to an asteroid to mine. Frigate HAS
MOUNT_MINING_LASER_IIbut produced 0 ore in 13+ min while cycling cooldowns;mine-eventstelemetry PUTs return 400 (contract mismatch, same family as the markets bug #8). The sole cargo ship was stuck on an impossible task.TRADE_FIRST=1did not override the in-progress contract.5. Ships default to DRIFT not CRUISE (greenfield speed killer)
With no known fuel markets at boot, ships navigate in DRIFT (e.g. 40–58 min for an intra-system hop) even when fuel is full (399/400). Seeding home markets (issue #16) gives fuel knowledge → should switch to CRUISE.
6. Home markets not eagerly mapped at boot (issue #16, confirmed)
Boot loads 0 markets; relies on the slow background crawler → 0 priced markets for a long time → no lanes. Manually seeding the home system's 26 markets (
PUT /markets) immediately let the bot load them and scan-sweep. Should eager-fetch home-system waypoints+markets right afterresolveHome().Repro
Fresh-reset agent,
docker compose --env-file deploy/bot.greenfield.env up. Observe: 0 trades, credits flat, frigate stuck mining 0 ore, phase GATE_*.Minimum to make greenfield earn
Fix #1 (reserve scaling), #2 (phase capital-gating), #3 (single-trader dispatch). #4/#5/#6 are accelerators. Recommend a dedicated greenfield bootstrap path: eager-map home markets → CRUISE → PROFIT-trade the best lane with the starter ship → buy a 2nd trader → scale.
Related: #8 (markets write contract), #15 (large-fleet takeover), #16 (eager home-market bootstrap).