Section 01What D is, and is not
D is a measure of evidence coverage. It answers one question: how far is this scenario from conditions NASA has actually tested, for this kind of fire question, in this gravity regime?
D is not:
- a prediction of whether, or how, a fire would ignite, spread or go out;
- a safety score, a risk rating, or a margin of safety;
- a certification or qualification of any environment or material;
- proof that two test conditions are scientifically equivalent. A small D means a similar test exists, not that the outcome would be the same.
Section 02Condition space and units
Every test row and every scenario is described on the same axes: O₂ mole fraction (% by volume), total pressure (kPa), ventilation flow (cm/s), gravity regime, and fuel class. Units are converted with fixed constants:
| From | kPa |
|---|---|
| 1 psia | 6.894757 |
| 1 atm | 101.325 |
| 1 bar | 100 |
| 1 mmHg | 0.133322 |
| 1 mbar | 0.1 |
Each value keeps its basis: measured; nominal (stated) — a value the investigators state, not a measurement; reported limit — a threshold the authors inferred from a series of tests; or not recorded. The original cell text is kept beside every normalised value, with the conversion applied.
Three rules prevent values being read as something they are not:
- Missing values are never inferred. If a table does not record pressure, the run has no pressure. A nominal pressure is used only where the investigators state one.
- Burner-fed oxidizer is not cabin O₂. In inverse-flame tests (ACME CFI-G and Flame Design) the O₂ fraction describes the gas fed through the burner into a fuel/diluent chamber. Those 274 runs are not placed on the ambient O₂ axis.
- Reported limits are not tests. Published limiting-O₂ values are shown as separate marks and never used as the nearest evidence.
Section 03Comparability gate
Before any distance is computed, a run must pass a gate. A gas-burner flame is never counted as evidence about cabin fabrics, and no distance is ever computed across gravity regimes.
| Question | Comparable | Context only (never sets the verdict) |
|---|---|---|
| Material flammability | Solid · thin, Solid · thick, Solid · unclassified | — |
| Smoke & detection | Smoke source, Solid · thin, Solid · thick, Solid · unclassified — solids only when they carry smoke or alarm measurements | No fuel |
| Suppression | Liquid droplet, Solid · thin, Solid · thick, Solid · unclassified | — |
| Liquid fuel & cool flames | Liquid droplet | Gas burner |
- Planned experiments are never evidence. Published results (not in PSI) count only when you include them.
- The material filter (thin / thick) narrows solid runs; unclassified solids stay in.
- A run with no recorded O₂ cannot be placed and is not compared. Otherwise a run matched on pressure alone could look deceptively close. This is why the smoke-detector tests (SAME, SAME-R), which record no O₂, give the verdict NONE rather than borrowing a verdict from flammability burns.
- Reported limit values are set aside as limits.
- A run tested in a different gravity regime is listed under that regime and never compared.
Section 04Evidence distance
For a comparable run r and scenario s, each axis gap is divided by a scale, and D is the root of the sum of squares:
D=square root of (wO₂·ΔO₂2+wP·ΔP2+wU·ΔU2)
ΔO₂=O₂r−O₂s divided by 2
ΔP=ln(Pr / Ps) divided by ln 1.25
ΔU=Ur−Us divided by 5
- D
- evidence distance from the scenario to one comparable run, in scale units (dimensionless)
- r, s
- a comparable run (a tested condition) and the scenario
- O₂
- O₂ mole fraction, % by volume; its gap is in percentage points, divided by the O₂ scale of 2 points
- P
- total pressure, kPa; compared as a ratio on a log scale, one unit being a pressure ratio of ×1.25
- U
- ventilation flow, cm/s, divided by the flow scale of 5 cm/s; compared only if both flows are numeric
- ΔO₂, ΔP, ΔU
- signed axis gaps in scale units (run minus scenario)
- wO₂, wP, wU
- axis weights: 1, 1 and 1
The D of a scenario is the smallest D over the comparable runs in its gravity regime.
One unit of D is a 2-point O₂ difference, or a 25% pressure ratio, or a 5 cm/s flow difference. The scales are expert judgement, chosen to be commensurate with published effect sizes:
- 2 points of O₂ — the order of published gravity-induced shifts in limiting O₂: for Mylar, the Moon value sits 5.6 points below 1 g (Olson & Ferkul, Table I), and 1.9 points separate the BASS-II 0 g and 1 g limits (BASS-II summary report).
- ×1.25 pressure — on this scale, 10.2 psia versus 14.7 psia is 1.6 units.
- 5 cm/s flow — the BASS-II flammability boundary is U-shaped in flow, with its minimum at low ventilation speeds (BASS-II summary report).
Missing axes. If either side lacks an axis, that axis is left out and the match is labelled partial with the axes used. Leaving an axis out can only lower D, so MARGIN also reports the best fully compared test whenever the nearest is partial. Quiescent versus ventilated flow is a categorical mismatch: the flow gap is not computed and the mismatch is shown. Ties are broken complete-before-partial, then by run id.
Illustration of the method, not data
The D ≤ 1 and D ≤ 2.5 regions around one example test, drawn by the engine on the O₂ × pressure plane, with all three scales at ½×, 1×, 2× their defaults. Change the scales or the probe’s flow to see how the regions and the probe’s D respond.
Probe to example test
D 1.51 NEAR
- O₂ gap
- −1.50
- Pressure gap
- −0.19
- Flow gap
- 0.00
Gaps in scaled units (test minus probe). Scales at 1×: 2 pts O₂, ×1.25 pressure, 5 cm/s flow.
- D ≤ 1 from the example test (DIRECT)
- D ≤ 2.5 (NEAR)
- D = 2.5 at the other two scale settings
- Example test (published, not in PSI)
- Probe (a scenario)
evaluate, distance and distanceField from lib/engine. One test only: the Atlas map uses every comparable run. Not a hazard map.Section 05Verdict classes
| Class | Condition | Reads as |
|---|---|---|
| DIRECT | D ≤ 1 | A comparable test lies within one scale unit on the compared axes. |
| NEAR | 1 < D ≤ 2.5 | Comparable tests are nearby but differ noticeably on at least one axis. |
| DISTANT | D > 2.5 | The nearest comparable test is far from the scenario. |
| NONE | no comparable test | Nothing in this gravity regime passes the gate for this question. |
These are classes defined by MARGIN’s method — the scales and thresholds above. They are not established scientific categories, and they say nothing about how a fire would behave.
Section 06Robustness
Because the scales are judgement, every verdict is recomputed with each of the three scales at ½×, 1×, 2× its default (3³ = 27 combinations; the pressure ratio is raised to the power of the factor). If all combinations agree, the verdict is labelled robust; otherwise sensitive, with the range of classes.
ExampleThe Exploration Atmosphere (34% O₂, 56.5 kPa, 10 cm/s, microgravity, published evidence included): sensitive, NEAR 9 · DISTANT 18 of 27; D spans 1.25–5.02.
Section 07The flow assumption
Ventilation flow is an input you choose. MARGIN’s presets use 10 cm/s. Because flow is one of the three axes, the assumed flow can move a verdict across a class boundary. The table shows how D for the Exploration Atmosphere changes with the assumed flow, with everything else fixed.
| Assumed flow | D, PSI only | Class | D, with published | Class | Nearest (with published) |
|---|---|---|---|---|---|
| quiescent | 5.95 | DISTANT (partial) | 1.51 | NEAR (partial) | PUB-SAFFIRE:VI-2 |
| 5 cm/s | 6.45 | DISTANT (partial) | 3.36 | DISTANT | PUB-SAFFIRE:VI-2 |
| 10 cm/s (preset) | 6.28 | DISTANT (partial) | 2.51 | DISTANT | PUB-SAFFIRE:VI-2 |
| 15 cm/s | 6.03 | DISTANT (partial) | 1.81 | NEAR | PUB-SAFFIRE:VI-2 |
| 20 cm/s | 5.95 | DISTANT (partial) | 1.51 | NEAR | PUB-SAFFIRE:VI-2 |
| 25 cm/s | 6.03 | DISTANT (partial) | 1.81 | NEAR | PUB-SAFFIRE:VI-2 |
| 30 cm/s | 6.28 | DISTANT (partial) | 2.51 | DISTANT | PUB-SAFFIRE:VI-2 |
With published evidence, the class changes at 10.05 cm/s (DISTANT → NEAR) and 29.95 cm/s (NEAR → DISTANT). At the 10 cm/s preset the verdict is DISTANT with D = 2.51, just above the 2.5 boundary. MARGIN keeps the preset at 10 cm/s and shows this sensitivity rather than choosing a flow that produces a more favourable class. A NEAR result at 20 cm/s describes a different scenario; it does not correct the 10 cm/s result.
Section 08Gravity regimes
Gravity is categorical: microgravity, lunar, Martian and Earth gravity are separate regimes. There is no gravity slider and no line, curve or estimate between regimes. Every PSI run in this snapshot was flown in microgravity; PSI holds no partial-gravity combustion runs.
Why not interpolate? In NASA drop-tower tests of Mylar G at 10.2 psia, the limiting O₂ at lunar gravity (15.6%) was below both the 0 g value (17%) and the 1 g value (21.2%) — Olson & Ferkul, ICES-2012-3492, Table I, p. 6. Microgravity and Earth results did not bound lunar behaviour for this material, so MARGIN does not estimate any regime from the others.
Section 09The coverage map
The shaded plane on the Atlas is D evaluated at every point of the O₂ × pressure window, with the scenario’s flow, gravity, question and material held fixed. Dark shading is D ≤ 1, light is D ≤ 2.5, hatching is further. Only runs with both O₂ and pressure recorded shape the map; runs lacking a pressure still count for the verdict as partial matches and are disclosed beneath the map. The dashed contours show where the 2.5 boundary would sit if the O₂ and pressure scales were halved or doubled. It is a map of where tests exist, not a hazard map.
Section 10Investigation ranking
R=100×( 0.4·P+0.2·H+0.15·S+0.15·C+0.1·M )
- R
- rank score of an investigation for the scenario, 0–100 (weights renormalised to sum to 1)
- P · proximity
- exp(−Dmin) over the investigation’s comparable runs; 0 if none.
- H · question match
- 1 if the investigation primarily addresses the question, 0.5 if secondarily, else 0 (curated hazard map).
- S · scale
- large-scale 1, bench 0.6, ground 0.4.
- C · coverage
- share of the investigation’s runs within NEAR of the scenario.
- M · measurements
- 1 if an outcome plus a question-relevant metric is recorded, 0.5 if outcome only, else 0.
Investigations with at least one comparable run always rank above those with none; the latter are ranked on metadata only and labelled so. The weights can be changed in the interface.
Section 11Data quality
PSI run tables fetched 2026-11-14: 1,870 run rows (1,828 distinct; 42 exact duplicates flagged and kept), plus 130 summary rows that describe test series rather than single runs and are never treated as runs. 887 runs record both O₂ and pressure and can be placed on the map. The ACME CFI-G inverse-flame file contains 861 trailing blank lines, which are ignored.
| Flag | Runs | Meaning |
|---|---|---|
| assumed-value | 1,021 | A value set by a documented rule rather than read from a cell (e.g. flow 0 for quiescent droplet and burner tests). |
| missing | 1,012 | A value is absent in the source table (left empty, never filled in). |
| approximate | 344 | The source gives a range or an approximate value; the first value is used. |
| burner-fed-oxidizer | 274 | Inverse flame: the O₂ value is the burner-fed oxidizer stream, not the ambient atmosphere, so it is not placed on the O₂ axis. |
| suspect-unit | 262 | The column's unit label looks inconsistent with its values; kept but not used for distance. |
| nominal-value | 218 | Pressure is a nominal value stated by the investigators, not a measurement. |
| unverified-transcription | 131 | A value whose supporting statement has not yet been checked against its primary source. |
| ambiguous-unit | 129 | The source unit is ambiguous (e.g. uncalibrated fan setting), so the value is not converted. |
| text-parsed | 99 | The value was parsed from text in the cell (e.g. "1 atm"). |
| duplicate-row | 42 | An exact duplicate of another row in the same table; kept and counted, flagged. |
| out-of-range | 14 | A value outside physical range (e.g. final O₂ above initial); never used. |
| derived-value | 9 | The investigators derived this value from another measurement (e.g. O₂ from CO₂ production). |
| Investigation | File | Kind | Rows | Kept |
|---|---|---|---|---|
| PSI-25 | PSI-25_Experimental table_BASS-II.csv | run | 129 | 129 |
| PSI-26 | PSI-26_Experimental table_BASS.csv | run | 122 | 121 |
| PSI-98 | PSI-98_Experimental table_SAFFIRE-1.csv | run | 4 | 2 |
| PSI-99 | PSI-99_Experimental table_SAFFIRE-2.csv | run | 15 | 9 |
| PSI-100 | PSI-100_Experimental table_SAFFIRE-3.csv | run | 2 | 2 |
| PSI-69 | PSI-69_Experimental table_FLEX.csv | run | 274 | 274 |
| PSI-39 | PSI-39_Experimental table_CFI.csv | run | 87 | 87 |
| PSI-159 | PSI-159_Experimental table_CFI-G_Normal Flames.csv | run | 179 | 179 |
| PSI-159 | PSI-159_Experimental table_CFI-G_Inverse Flames.csv | run | 154 | 154 |
| PSI-10 | PSI-10_Experimental table_Flame Design_Normal Flame.csv | run | 207 | 207 |
| PSI-10 | PSI-10_Experimental table_Flame Design_Inverse Flame.csv | run | 120 | 120 |
| PSI-107 | PSI-107_Experimental table_Spice.csv | run | 469 | 469 |
| PSI-102 | PSI-102_Experimental table_SAME.csv | run | 8 | 8 |
| PSI-101 | PSI-101_Experimental table_SAME-R.csv | run | 109 | 109 |
| PSI-68 | PSI-68_Experimental table_Flex2.csv | summary | 8 | 8 |
| PSI-106 | PSI-106_Experimental table_Slice.csv | summary | 12 | 12 |
| PSI-20 | PSI-20_Experimental table_ACME BRE.csv | summary | 18 | 18 |
| PSI-21 | PSI-21_Experimental table_CLD Flame.csv | summary | 32 | 32 |
| PSI-22 | PSI-22_Experimental table_ACME E-FIELD Flames.csv | summary | 32 | 32 |
| PSI-23 | PSI-23_Experimental table_ACME s-Flame.csv | summary | 18 | 18 |
| PSI-47 | PSI-47_Experimental table_DAFT.csv | summary | 2 | 2 |
| PSI-142 | PSI-142_Experimental table_Data Summary Table.csv | summary | 8 | 8 |
Section 12Limitations
- Evidence distance measures coverage of test conditions, not flammability. Being close to a test does not mean a material behaves the same way.
- The axis scales (2 pts O₂, 25% pressure, 5 cm/s flow) are expert judgement; robustness to ½×–2× is shown.
- Tested configurations are narrow: mostly PMMA, SIBAL fabric, a few liquid fuels and gas burners.
- Partial-gravity evidence is three materials in 5.18 s drops plus one rotating sounding-rocket flight reported in conference slides.
- Published values differ between papers (Saffire O₂, pressure, flow direction and heat release); all reported values are shown.
- “Nominal (stated)” pressures are not measurements.
Section 13Claims MARGIN does not make
- That any atmosphere, material or vehicle is acceptable, or not, for crewed use.
- That a scenario close to a test would behave like that test.
- That results at 0 g and 1 g bracket lunar or Martian behaviour.
- That a gas-burner or droplet flame says anything about cabin materials.
- That a planned experiment is evidence.
- Any flammability prediction for an untested material or condition.
Section 14Reproducibility
The data pipeline (pipeline/) downloads the PSI combustion records and experimental tables once and writes a versioned snapshot; the app never calls NASA at run time. The engine (lib/engine) is pure TypeScript with unit and science tests, and the constants on this page are read from it directly. Every scenario is encoded in the page URL, so a shared link reproduces the same result. See Sources for every reference.