Lunar Farm · BLSS economics · September 2026

What a Playable Closed Loop Teaches About Closing One

Bioregenerative life support is usually modelled as a control problem. Put a decision-maker inside the loop and different questions become answerable — including which incentives make closing it a rational choice.

01 — Findings

Four results

15.5×the factor by which an anaerobic digester lifts the minimum carbon buffer — the only compartment that moves the floor rather than the mean
2.94×broadcast revenue from a ten-crop rotation against a monoculture, while closure income stays flat (r = 0.989, p = 7.4 × 10⁻⁸)
−60.6 kgthe carbon a nitrifying bioreactor costs the system when a digester is present: they compete for the same waste
~20%the optimum share of the farm grown in the dark. At or above 60%, every run ends on oxygen — not on food
2.93×the same diversity result re-run with the event deck live and the manager jittered — against 2.94× deterministic
4 of 4headline conclusions that survive being re-run with a noisy operator at the controls — two secondary ones do not
02 — Carbon

Only the digester lifts the floor

A closed farm that exports food exports carbon inside it, so its buffer runs down. Below roughly 14 kg the whole canopy drops to 15% of rate. The distinction that matters is between raising the mean buffer and raising its minimum: arms that do the first still spend part of every lunar cycle in carbon limitation.

Left: horizontal bars of the lowest CO2 buffer reached per arm, with the anaerobic digester far ahead at 79 kg and every other arm clustered near 5 kg. Right: CO2 trajectories over 300 days showing a lunar-cycle sawtooth, with the no-compartment arm repeatedly bottoming out at the 14 kg limitation threshold.
Eight seeded runs per arm over 300 days, with starvation timing and substrate quality controlled out. The sawtooth on the right is the lunar cycle: a lit canopy draws the buffer down through the sunlit fortnight and it recovers through the dark one, when halls are shed for want of power.
ArmCO₂ floorCO₂ meanHarvests
Anaerobic digester79.4 kg217.2 kg14
Mushrooms in rotation6.2 kg149.9 kg16
All four compartments5.9 kg157.7 kg14
Mealworm tier5.6 kg87.3 kg13
No compartment5.1 kg77.0 kg12
Spirulina in rotation4.9 kg69.0 kg16
The comparison that was wrong first

Our first, uncontrolled pilot run (its output was not kept in this repository) showed a plants-only farm failing 3 of 3 and a mushroom rotation surviving 3 of 3 — apparent proof that a respiring compartment rescues the carbon loop. It was not. A photosynthetic control survived too, and once starvation timing and raw-regolith growth were controlled, the mushroom rotation raised the mean buffer and left its floor untouched. The effect was harvest cadence, not respiration.

It is documented in the manuscript rather than quietly corrected, because it is the most transferable thing here.

03 — Incentives

Biodiversity can be made to pay

The farm has two income streams, shaped to price different things. A broadcast mechanic pays for filmed segments whose novelty collapses on airing and recovers slowly; a life-support contract pays on the share of crew life support the farm actually carries. The first should reward variety and the second should be indifferent to it.

Left: broadcast revenue rising near-linearly with rotation breadth from about 44,000 to 129,000 credits, while service-contract revenue stays flat near 30,500. Right: paired bars showing terminal credits with and without a studio across rotation breadths.
Broadcast revenue scales with rotation breadth (r = 0.989, p = 7.4 × 10⁻⁸); service income does not (r = −0.584, p = 0.076). Two incentives on one farm, without interference.
04 — Interaction

The better earner is the worse citizen

Separating what each compartment adds alone from what it adds given the other three exposes a substrate conflict. The nitrifying bioreactor processes more than twice the waste the digester does and is paid accordingly — but every unit it oxidises is a unit the digester cannot mineralise back into carbon dioxide.

Left: paired bars of each compartment's carbon contribution alone versus given the other three, with the digester strongly positive and the nitrifier strongly negative in the marginal case. Right: extra station income per compartment, dominated by the nitrifying bioreactor.
A player optimising income alone will build the nitrifier and degrade the loop they are being paid to close. This is the class of misalignment a human-in-the-loop model exists to surface, and it is invisible in a single-arm analysis.
05 — Night

Heterotrophs are a supplement, never a substitute

A dark-grown crop is never shed when power is short, which argues for growing more of them. It is also a heterotroph that burns oxygen and returns carbon dioxide.

Left: load shedding falling from about 51 percent to zero as the dark-grown fraction rises. Right: harvests collapsing from 21 to 1 over the same range, with a shaded region above 60 percent where every run fails.
Above 40% dark-grown the trade turns, and every run at or above 60% ends between day 144 and day 187 — on oxygen exhaustion, with the carbon buffer at its cap and more than 700 days of food still in store. The optimum sits near 20%.
06 — Robustness

It holds with a worse operator at the controls

The first four experiments suppress the event deck, which is the model's only stochastic element — so their seeds test reproducibility, not robustness. Re-running the economics with the deck answered and the manager's own thresholds jittered per run gives the seeds something to disagree about.

Left: broadcast revenue per day survived rising from about 184 to 512 credits across rotation breadths one to ten, with error bars, annotated r = 0.967 and a 2.93x ratio against 2.94x deterministic. Right: paired bars showing the coefficient of variation of total earnings at 34 to 38 percent against the earning rate at 1 to 8 percent.
The ratio reproduces at 2.93× against 2.94×, and survival is flat at 58% across every rotation breadth — so run length is not driving the trend. The variance decomposition is the new part: almost all the run-to-run spread is in when the farm died, not in how well it traded while alive.
Three panels. A: grouped bars of the lowest CO2 buffer per arm, deterministic against stochastic, with the digester at about 80 kg in both. B: horizontal bars of marginal carbon contribution given the other three compartments, with the nitrifier strongly negative at minus 86 kg, digester and reef positive, and the mealworm not significant. C: survival against dark-grown fraction, deterministic and stochastic curves both falling to zero between 40 and 60 percent.
All four experiments re-run with twelve noisy operators. The digester's carbon floor holds at 15.1× (p = 7 × 10⁻²¹), the negative nitrifier interaction grows to −86.0 ± 8.7 kg (mean ± s.e., p = 6 × 10⁻⁸), and the oxygen cliff sits at the same boundary. Two secondary readings change: a mealworm tier has no detectable carbon effect (p = 0.73), and a fungal rotation's floor is far higher and far more variable than one trajectory suggested (31.3 ± 20.5 kg, mean ± s.d., against 6.2). The deterministic arms were not wrong so much as unquantified.
The first attempt killed every run

In a pilot whose output was not kept, answering the deck uniformly at random ended all 120 runs, most inside a month: a coin toss never patches a hull, so pressure walks down to the abort limit, and it accepts the broker's offer to sell the larder down to a twelve-day reserve. That would have supported the conclusion that the economy is fragile. It was the policy that was fragile.

Adding noise is not the same as modelling a worse operator. The reported policy takes the remedial choice with probability 0.75 — a competent operator having an occasional bad day. That number is chosen, not measured.

07 — Provenance

Where the parameters come from

Compartment ratios are taken from the Lunar Palace 1 ("Yuegong-1") 105-day multi-crew closed experiment of February–May 2014. The ratios are theirs; the throughputs they are applied to are scaled for play.

ParameterValueSource
Tenebrio molitor bioconversion8.13%Li et al. 2015
Feed excreted as frass78.43%Li et al. 2015
Nitrogen recovery from urine20.5%Fu et al. 2016; Dong et al. 2017
Solid waste degradation41%Fu et al. 2016
Food regenerated in the closed run55%Fu et al. 2016
Carbon imported inside stored food247 g d⁻¹Dong et al. 2017
Two honest caveats

The reef microcosm compartment is speculative. No marine calcifying system has been flown, and calcification is a local carbon dioxide source rather than a sink. It is included as a design probe and labelled as such throughout.

The model is a game. Its constants are balanced for play, and nothing here is a measurement of a physical life support system. Between-seed variance in the economics experiment is exactly zero because the scripted policy suppresses the event deck — the seeds test reproducibility, not robustness.

08 — Reproducing

Every figure regenerates

The sweep loads the game's own data.js and sim.js and seeds Math.random, so the analysis measures the code that ships. The data were generated against LunarSims commit a04b81b; re-running the sweep against it reproduces every data file byte for byte.

node code/01_sweep.js
python3 code/02_carbon_stability.py
python3 code/03_diversity_economics.py
python3 code/04_compartment_knockout.py
python3 code/05_night_resilience.py
python3 code/06_stochastic_policy.py
python3 code/07_robustness.py