Repository navigation
spacecost 0.2.0
Adds a sixth reference table and corrects a ranking that had always been wrong.
Data contract: pipeline_version 1.14.0 → 1.15.0. Every output CSV changed, because the stamp is a column on all of them. No pre-existing value moved: the five inherited tables are byte identical to the 1.14.0 build once the two provenance columns are stripped.
A sixth table: environments, 23 destinations
Solar flux, array mass factor, blackbody temperature, cycle period and eclipse fraction per destination — the power, thermal and comms penalty for being somewhere other than Earth orbit.
Behaviour change: propellantless rows are excluded by default
This moves the top of the ranking. A sail has no propellant, so its Isp is infinite, so the mass ratio is 1, so any Δv costs exactly $0.00 — and the three sail and tether rows swept the top three places of every ranking this package has ever returned, including the one spacecost propellant 6500 printed. cheapest_propellant_for now reads the two flags that exist to stop the arithmetic being believed. Pass include_propellantless=True to bring them back.
Three figures stopped being typed twice
RTG specific power, the eclipse fraction and the volatile containment mass each existed as a literal in both storage_systems and operational_costs, agreeing only because nobody had edited one yet. storage.py now reads all three from the ops rows, ops being what Stage 4 consumes and therefore the authority.
Also: validate can be heard and can fail, new schema and live-price tests, a reference row no longer reads a mutable config singleton, and dead imports removed.
Reference platform for the summary hash moved to Python 3.13 / numpy 2.2.6 / pandas 2.3.3, because that is the machine this release was cut on. It does not affect the six reference tables, which are byte identical on every platform.
Full detail in CHANGELOG.md.
pip install git+https://github.com/loggger101/spacecost@v0.2.0