|
| 1 | +# Mars Colony Viability (Strict Science-Only Baseline) |
| 2 | + |
| 3 | +This repository starts from **zero assumptions** and enforces a hard rule: |
| 4 | + |
| 5 | +> **No numeric parameter is used unless it is backed by a verifiable primary source** (NASA/ESA technical reports, peer-reviewed journals, or NASA NTRS). |
| 6 | +
|
| 7 | +All verified numeric anchors are stored in `models/verified_constants.py` and documented in `VERIFIED_SOURCES.md`. |
| 8 | + |
| 9 | +## What this repo answers (v0.0.x baseline) |
| 10 | +A narrow, falsifiable engineering question: |
| 11 | + |
| 12 | +**Given colony size `N0`, initial stores of O2 and water, local closure fractions, and discrete resupply windows: _when does the colony collapse due to O2 or water depletion?_** |
| 13 | + |
| 14 | +Radiation is tracked only as **dose bookkeeping** using published cruise vs surface dose-equivalent rates. |
| 15 | +This repo does **not** convert dose to clinical outcomes. |
| 16 | + |
| 17 | +## Negative-result posture (important) |
| 18 | +This project is designed to surface constraints. If a scenario collapses, that is a scientifically useful result (it reveals required closure/resupply conditions). |
| 19 | + |
| 20 | +## What this repo explicitly does NOT do (yet) |
| 21 | +- Food/calories model (requires verified agricultural yields and energy budgets). |
| 22 | +- Fertility / multi-generational physiology at 0.38g (no verified human dataset). |
| 23 | +- Long-duration ISRU reliability curves (requires demonstrated multi-year plant datasets). |
| 24 | +- Terraforming claims. |
| 25 | + |
| 26 | +See `docs/NON_CLAIMS.md`. |
| 27 | + |
| 28 | +## Quickstart |
| 29 | +### Install |
| 30 | +`ash |
| 31 | +python -m venv .venv |
| 32 | +# Windows PowerShell: |
| 33 | +. .\\.venv\\Scripts\\Activate.ps1 |
| 34 | +python -m pip install --upgrade pip |
| 35 | +pip install -r requirements.txt |
| 36 | +`ash |
| 37 | +python main.py --help |
| 38 | +Because parent directories may contain unrelated pytest configs, always run: |
| 39 | +`ash |
| 40 | +python -m pytest -c pytest.ini |
| 41 | +- `docs/methodology.md` ? equations, units, collapse criterion (no speculative numbers) |
| 42 | +- `docs/NON_CLAIMS.md` ? explicit scope limits and non-claims |
| 43 | +- `paper/manuscript.md` ? manuscript scaffold (Markdown -> LaTeX/PDF later) |
| 44 | + |
| 45 | +## Citation |
| 46 | +See `CITATION.cff`. |
| 47 | + |
| 48 | +- If/when a Zenodo DOI exists, it will be added to `CITATION.cff` and pinned in a new release. |
| 49 | + |
| 50 | +## DOI |
| 51 | +Zenodo DOI: 10.5281/zenodo.18517605 |
| 52 | + |
| 53 | + |
| 54 | + |
| 55 | + |
| 56 | + |
| 57 | +## Published Results (Reproducible) |
| 58 | + |
| 59 | +The following scenarios were executed using the public codebase. |
| 60 | +All results below are generated directly from model execution. |
| 61 | + |
| 62 | +See: |
| 63 | +- \esults/published_metrics.csv\ |
| 64 | +- \esults/published_metrics.md\ |
| 65 | + |
| 66 | +Key observable metric: |
| 67 | +- \days_elapsed\: simulated survival time until system collapse. |
| 68 | + |
| 69 | + |
| 70 | + |
| 71 | +<!-- PUBLISHED_RESULTS_START --> |
| 72 | +## Published Results (Reproducible) |
| 73 | + |
| 74 | +Source of truth: results/summary.csv (generated by running the public model). |
| 75 | + |
| 76 | +Reproduce (PowerShell): |
| 77 | +`powershell |
| 78 | +python -m scripts.run_scenarios |
| 79 | +| scenario_id | N0 | o2_storage_days | water_storage_days | o2_local_fraction | water_local_fraction | water_recovery_fraction | launch_window_days | missed_window_probability | collapsed | collapse_day | dose_msv | |
| 80 | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | |
| 81 | +| S1_baseline | 12 | 365 | 365 | 0.97 | 0.98 | 0.98 | 780 | 0.2 | False | N/A | N/A | |
| 82 | +| S2_higher_closure_buffers | 12 | 730 | 730 | 0.995 | 0.995 | 0.98 | 780 | 0.1 | False | N/A | N/A | |
| 83 | +| S3_scale_stress | 50 | 365 | 365 | 0.98 | 0.985 | 0.98 | 780 | 0.2 | False | N/A | N/A | |
| 84 | + |
| 85 | +### Figures |
| 86 | +-  |
| 87 | +-  |
| 88 | + |
| 89 | +### Falsifiable outcome statements |
| 90 | +- S1_baseline: N0=12, O2_local_fraction=0.97, Water_local_fraction=0.98, launch_window_days=780, missed_window_probability=0.2 -> collapsed=False at day=N/A; dose_msv=N/A |
| 91 | +- S2_higher_closure_buffers: N0=12, O2_local_fraction=0.995, Water_local_fraction=0.995, launch_window_days=780, missed_window_probability=0.1 -> collapsed=False at day=N/A; dose_msv=N/A |
| 92 | +- S3_scale_stress: N0=50, O2_local_fraction=0.98, Water_local_fraction=0.985, launch_window_days=780, missed_window_probability=0.2 -> collapsed=False at day=N/A; dose_msv=N/A |
| 93 | + |
| 94 | +Notes: |
| 95 | +- If collapse_day is N/A, the current run ended without emitting a collapse day for that scenario (model output), not a manual edit. |
| 96 | +<!-- PUBLISHED_RESULTS_END --> |
| 97 | + |
| 98 | + |
|
0 commit comments