Commands and the resolution loop replay arrivals and Independent
pilots' decisions in time order, at most 7 days, in chunks with
progress; the same time always gives the same save (decision 0.5.125).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Commands to buy the Dispatch Office, set a pilot's mode and orders, and
set the spending floor; save version 5 starts every pilot on Manual
(decisions 0.5.118-0.5.120).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pure functions for Independent pilots: the jobs they may take, profit
per hour, fuel bought only for the leg above the spending floor, and the
chosen action (decisions 0.5.120-0.5.124).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
GameConfig.independentPilots: Dispatch Office price, first-look window,
turnaround, empty periods before heading home, catch-up cap and spending
floor (CR-020).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CR-019 §6 amendments (plan 0.5.52, 0.5.53, 3.9, 9.4, 12.1; CR-002,
CR-006, CR-007). The balance player reads boards for the qualifying
fleet; e2e 12.6 learns Heavy Cargo before a Heavy job is offered.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Location boards are generated for the qualifying fleet and store it;
reads hide jobs it can no longer complete. Save version 4 drops stored
boards (decisions 0.5.115, 0.5.117).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With a fleet, boards keep only candidates some pair can complete, up to
the board size or 200 attempts (decision 0.5.114). The balance player
keeps enough cash to refuel landed ships before buying one.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
permanentFailure, completability and qualifyingFleet: a job is
completable when some qualifying ship-and-pilot pair passes every
permanent check (decisions 0.5.114-0.5.116).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
New ships (deal or Market) come full on Manual refueling; save version
3 puts every existing ship on Manual. The balance simulator refuels only
when a job needs it (decisions 0.5.111, 0.5.112).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Base fuel price 10 -> 5 cr/fu. No route is above 25% of the median
fitting payout but the Clipper's Mars -> Earth; the first purchase
window is now 30-95 min (user decisions, 0.5.110).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
For every purchasable ship and route it can fly, the leg's fuel at the
origin's price against the median payout of fitting contracts; the
balance script prints the table (decision 0.5.110).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Tests the five-run deal: not after four runs, available after the fifth
at the Moon, both pilots and ships at Earth after accepting, and an
older save with four runs done needing one more. No save migration is
needed since the deal is worked out from the run count.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The tutorial timing test now sums the slowest job on each of the five
runs' boards and keeps the total under 7 real minutes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Tutorial runs earn their XP times the tutorial XP multiplier. At 2x
the five cheapest runs make exactly the 100 XP for level 1, so the
avatar always has a skill point at the deal.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Five tutorial runs before the deal and a tutorial XP multiplier of 2.
The deal no longer waits for the loaner to be back at Earth, since five
runs end at the Moon; accepting it still puts the avatar at Earth.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Older saves open with the three new places undiscovered and nothing
else changed (the save lists only discovered places, so no migration is
needed), Earth boards offer first contacts to Venus, and delivering one
discovers Venus and opens its board with Venus goods.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Every cell of the CR-015 reach table and the CR-016 additions holds with
the existing tanks, so no content changes: the step adds one test per
new cell, the Bulk Hauler's 900M km minimum, and the Courier's
Jupiter-system loop.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adds Atmospheric Data Cores, Refined Sulfur, Volcanic Isotopes and
Subsurface Ocean Samples, and the new producers and destinations for
existing goods at Venus, Io and Europa.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Venus Cloud City, Io Sulfur Works and Europa Ice Station join the map
(fixed positions, Io and Europa riding with Jupiter), with their
fuel prices, range factors, shippers and sprites. Each makes a
Standard good so boards work there. The first-purchase balance window
widens to 45-95 minutes (user decision).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Applies CR-015's amendments to the implementation plan (deferred list,
decisions, content, sim, client and phase notes). The balance check now
also confirms no simulated ship ever needs emergency fuel while the
player has credits on Auto top-up. Phase 15 is complete.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Refuel a ship where it is (fill or an amount, at the local price),
switch its refuel policy, and order emergency fuel when the sim offers
it (fuel at 2.5x the local price, cost added to the loan). The save
fields and migration landed in Step 15.4.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The no-strand rule now asks whether the ship could leave the
destination on a full tank where fuel is sold, or on what is left
after the leg where it isn't. Emergency fuel is offered to an idle
ship that can't reach anywhere when the player can't afford the
shortfall: the cheapest leg's fuel at 2.5x the local price.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ships carry fuel: a leg burns from the tank at departure (no credits),
dispatch needs the fuel on board (not-enough-fuel), a leg's fuel cost
is fuel burned x the tank's average price, and Auto top-up refills on
landing with what the credits cover. The save gains tank fields (save
version 2, migration fills every tank). Market ships arrive full; the
deal's ships come with a quarter tank to keep the balance targets.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ships get a tank capacity and a burn rate instead of range and fuel
cost; locations get a fixed fuel price and a sellsFuel flag instead of
the launch cost multiplier. A leg burns burn rate x the economic
distance of (distance / origin factor), and reach is a full tank's
worth. Tanks are sized so every reach answer is unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Positions, distances, range checks, trip times, fuel and the no-strand
rule no longer take a time argument; the 48-hour no-strand margin goes
with it. Tests now check that a route's pay, trip time and fuel are the
same whenever it is offered or flown.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Locations get fixed polar coordinates (the Moon as an offset from
Earth) and astronomy-engine is removed, so positions now come from
content. Ranges move into CR-015's reach bands for the fixed distances,
and the Lighter's price drops to 36,000 to keep the balance targets.
Date-sampled tests become yes/no.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Removes apps/server (Fastify, Drizzle, pg-boss, Better Auth), the
development Postgres, the backup code routes, the web HTTP client and
the CI database service. Deployment is static hosting with Caddy. A
Playwright test checks that the production build loads only its own
files.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Export save turns the whole save into one code (gzip + base64url
behind a DEADHEAD1. prefix) to copy or share as a file; Import save
takes a pasted code or a file, migrates and validates it, and replaces
the company after confirmation. A bad code is refused and changes
nothing. These replace the backup code. Debug info now gives the save
id, save version and storage type.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The engine derives the notification schedule from the save after every
saved change (arrivals, rest ending, upgrades; same-minute events
combined) and replaces the platform's schedule. Capacitor
LocalNotifications on iOS/Android, a no-op on the web. Permission is
asked after the deal; Settings has an On/Off toggle.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>