Open the whole manual on one page

5. What would close this gap

The engine's plan of experiments that would add evidence.

What would close this gap: what it is and what it is not

Sometimes PSI simply has nothing comparable to your condition. "What would close this gap" turns that gap into a plan someone could test: which conditions to run, in what configuration, measuring what, and what NASA's own planned experiments are stated to cover.

Its title carries a label that must never be dropped: "What would close this gap — PYRION proposal (a testable plan, not a NASA plan)". Everything in it is PYRION's proposal. The parts that come from NASA documents (for example FM2's planned atmospheres) are quoted word for word, with the document and page, so you can tell them apart from what PYRION proposes.

The plan has these parts, each explained in its own topic: the gap itself, a test matrix around your condition, additional axes to be chosen by the experimenter, the configuration of the nearest comparable investigations, what such tests measure, what NASA's planned experiments are stated to cover, the part left uncovered, and the order of priority.

It is not a prediction of what you would find, not a design approved by anyone, and not a substitute for NASA's test standards.

## For engineers

experimentsNeeded(records, target, { catalog?, minimumStatus? }) (engine/src/experiments.ts:328; alias whatWouldCloseThisGap). Pure: it reads no files; the investigation catalog (acronym, title, DOI) is passed in (parseInvestigationCatalog on data/manifest/investigations.csv). Label constant: EXPERIMENT_LABEL (experiments.ts:13).

The target is normalized like everywhere in the engine: continuous.gravity_level becomes informational.gravity_level.

Gap kinds (ExperimentsNeeded.gap):

  • regime_untested (from evaluation.regimeUntested): "No PSI test was run in partial gravity; the investigations state only microgravity and normal gravity.";
  • outside_tested_data: no investigation is APPLICABLE and some extrapolate: the closest level sentence;
  • insufficient: no investigation is APPLICABLE and none extrapolates: the first blockers' sentences;
  • covered: some investigation is APPLICABLE ("At least one investigation is comparable at this condition for solid fuel." or "... but not for solid fuel.").

phaseCoverage evaluates the target with fuel_phase set to solid, liquid and gas in turn; best is APPLICABLE, EXTRAPOLATION or NONE (no comparable investigation), and zeroCoveragePhases lists the NONE phases.

Sources: engine/src/experiments.ts

The test matrix: target plus a bracketing grid

One test point does not make an envelope. The matrix surrounds your condition with neighbours so the results will show a region, not a dot:

  • Oxygen: your value, plus and minus 4 points, plus and minus 8 points. Five values. For 30 % oxygen: 22, 26, 30, 34 and 38 %.
  • Pressure: your value, plus and minus 15 %. Three values. For 70.3 kPa: 59.8, 70.3 and 80.9 kPa.

That is up to 15 test points, each at the gravity regime (and level, if you gave one) of your target.

Why these steps: the 4-point oxygen step is the size of the steps in FM2's own plan (25, 29, 33 and 37 %, NTRS 20260001966, PDF p. 10), so a neighbouring grid would be compatible with NASA's. The 8-point step is a coarse bracket, double that. The 15 % pressure step is PYRION's design choice, not a NASA design.

Points that would need more than 100 % oxygen (or a pressure of 0 or less) are dropped, so near-pure-oxygen targets get fewer points. If you set only oxygen or only pressure, only that axis is gridded.

## For engineers

Constants (engine/src/experiments.ts): TEST_MATRIX_O2_OFFSETS_POINTS = [-8, -4, 0, 4, 8] (line 16, points of oxygen: offset/100 is added to the mole fraction and rounded to 6 decimals), TEST_MATRIX_PRESSURE_FRACTIONS = [-0.15, 0, 0.15] (line 17, applied as p × (1 + f), rounded to 8 significant digits), TEST_MATRIX_NOTE.

matrixPoints keeps oxygen values with 0 < x ≤ 1 and pressures > 0; a point is the Cartesian product; isTarget marks the point equal to the target. Result: testMatrix { note, gravity: { regime?, level? }, points[], pointCount, sentence }. Listing additional axes does not change pointCount.

Sentence example: "15 test points in partial gravity: oxygen from 22 % to 38 % and pressure from 59.8 kPa (8.67 psia) to 80.9 kPa (11.7 psia), around the target."

Source of the ±4-point rationale: FM2 starting atmospheres 37, 33, 29 and 25 % at 8.2 psia (NTRS 20260001966, PDF p. 10, slide 9).

Sources: engine/src/experiments.ts; NTRS 20260001966 PDF p. 10

Margin points

Some points of the matrix are more severe than your target: they have more oxygen pressing on the flame than your target has. Those are margin points. If something burns at your target, it will probably burn at them; if it does not burn at your target, the margin points are where you would look for how much room there is.

FM2 does the same kind of thing: one of its four planned tests (25 % oxygen) "is not expected to ignite" and is there to provide a margin of safety if the limit is lower than expected.

The measure used is the oxygen partial pressure: oxygen fraction times total pressure. A point is a margin point when its oxygen partial pressure is higher than your target's. A point with more oxygen but much less pressure may not be a margin point, and the other way round.

## For engineers

marginPoint: true on a MatrixPoint iff o2 × pressure > targetPp × (1 + 1e-9) where targetPp = target.o2 × target.pressure (matrixPoints, engine/src/experiments.ts). The target point itself is never a margin point; points lacking oxygen or pressure never are. The matrix note says "Points whose oxygen partial pressure exceeds the target's are margin points."

Source for the FM2 margin remark: NTRS 20260001966, PDF p. 5 (slide 4): "4. Start at 25% not expected to ignite but would provide a margin of safety if the limit was lower than expected."

Test: engine/test/experiments.test.ts ("margin points are exactly those whose oxygen partial pressure exceeds the target's").

Sources: engine/src/experiments.ts; NTRS 20260001966 PDF p. 5

Additional axes: listed, not gridded

Oxygen and pressure are gridded because they are the axes PSI's tests vary most. Three more settings matter for a real experiment, but gridding them would multiply the number of tests. They are listed, not gridded, and each says plainly that the experimenter must choose it:

  • Gravity level, for a partial-gravity target: to be stated by the experimenter; the levels in use are 0.16 g (lunar, from a NASA lunar-gravity presentation) and 0.38 g (Mars, NASA's Mars fact sheet), each with its source.
  • Flow velocity, for a microgravity target: to be stated by the experimenter. If the nearest comparable investigations recorded a flow, the range they used is shown as a reference.
  • Sample thickness, always: to be stated by the experimenter, with the recorded range of the comparable investigations as a reference.

The reason for "stated by the experimenter": PYRION does not know what material or geometry the new test would use, so it will not invent a value.

## For engineers

additionalAxes: ListedAxis[] (engine/src/experiments.ts): { axis: 'gravity_level' | 'flow_velocity' | 'sample_thickness', label, statedBy: 'experimenter', sentence, options? }.

  • gravity_level only when target.regime.gravity_regime === 'partial_gravity'; options: { value: 0.16, unit: 'g', source: 'NTRS 20210020446, page 3, "glunar = 0.16 gearth"' } (SOURCES.lunarGravity, engine/src/presets.ts) and { value: 0.38, unit: 'g', source: 'Mars Fact Sheet, https://nssdc.gsfc.nasa.gov/planetary/factsheet/marsfact.html', quote: 'Surface gravity (mean) (m/s2) 3.73 9.82 0.380' } (SOURCES.marsGravity).
  • flow_velocity only when the regime is microgravity.
  • sample_thickness always.

Sentences: "Gravity level: to be stated by the experimenter; the levels in use are 0.16 g (lunar) and 0.38 g (Mars)." / "Flow velocity: to be stated by the experimenter. Recorded for the comparable investigations: PSI-9802 5 cm/s." (recorded ranges from the comparable investigations' records, 3 significant figures).

The 0.165 g figure of NASA's ground-test centrifuge (a ground analog, quoted on PDF p. 13 of the FM2 science presentation, NTRS 20260001966: "Upward Spread Lunar-g = 0.165 gE"; FM2 itself is a planned experiment, not a centrifuge) is the engine's named Moon gravity; the 0.16 g presentation figure is shown here because it is what the lunar-gravity literature quotes.

Sources: engine/src/experiments.ts; NTRS 20210020446 p. 3; NASA GSFC NSSDC Mars Fact Sheet

What to measure, and NASA-STD-6001B

This section lists what flammability testing measures. Each item is a word-for-word quote from a document in the repository, with the page, so nothing here is from memory:

  • Maximum oxygen concentration and burn length: from the NASA standard NASA-STD-6001B (approved 08-26-2011), whose Test 1 burns five vertical specimens of 30 cm by 6.5 cm and records how far each burns.
  • The limiting oxygen for extinction, upward and downward flame spread, flame spread rate, flame length and width, and the oxygen, pressure and gravity level over time: from the LUCI presentation (NTRS 20250010653).

Separately, "what PSI records for the comparable investigations" lists the outcome variables that the extracted records of those investigations really carry. If the extracted records of those investigations do not carry flame spread rate or limiting oxygen, the section says so and does not pretend that they do.

NASA-STD-6001B has no DOI. It is linked on standards.nasa.gov and the repository holds a copy; the link points at a historical copy.

Anything LUCI-related is flagged "simulated partial gravity (rotating vehicle)" (see "FM2 and LUCI: what is stated, and what is not").

## For engineers

TESTING_MEASURES (engine/src/experiments.ts), each { measure, quote, file, page, qualifier? }:

| Measure | Document | PDF page |
|---|---|---|

| Maximum oxygen concentration | NASA-STD-6001B | 30 |

| Burn length | NASA-STD-6001B | 29 |

| Limiting oxygen and extinction | LUCI, NTRS 20250010653 | 12 |

| Upward and downward flame spread | LUCI | 3 |

| Flame spread rate | LUCI | 13 |

| Flame length and width | LUCI | 24 |

| Oxygen, pressure and gravity level over time | LUCI | 5 |

NASA_STD_6001B: title "NASA-STD-6001B, Flammability, Offgassing, and Compatibility Requirements and Test Procedures", approved: '08-26-2011', file: 'nasa-std-6001b/nasa-std-6001b.pdf', url: 'https://standards.nasa.gov/sites/default/files/standards/NASA/B-w/CHANGE-2/2/Historical/nasa-std-6001b.pdf', doi: null, note "A historical copy on standards.nasa.gov. No DOI." Test 1 specimen quote (PDF p. 28): "Five test specimens, each with dimensions of 30 cm by 6.5 cm (12 in by 2.5 in) and tested one at a time, shall be mounted vertically in a test stand."

measurements.recorded is derived from the outcome: variables of the comparable investigations' records (never invented): label, unit and investigations; outcome:o2_mole_fraction_after_test, outcome:burn_time, outcome:burning_rate, ... exist in data/conditions. Test: engine/test/experiments.test.ts checks every PDF quote against its stated page with pdftotext when data/raw is present.

Sources: data/raw/nasa/nasa-std-6001b/nasa-std-6001b.pdf; NTRS 20250010653; engine/src/experiments.ts

FM2 and LUCI: what is stated, and what is not

Two NASA experiments are about burning materials at lunar gravity: FM2 (Flammability of Materials on the Moon, planned to launch in late 2026) and LUCI (a flight that burned samples under simulated lunar gravity). The plan lists what the NASA documents in the repository state, word for word.

FM2 is stated as a plan, per material: "FM2 plans four burns of one fabric (Synergy Pro "Navy") at 8.2 psia ± 0.3 psi with 37, 33, 29 and 25 % oxygen." The NASA web page adds only that it burns four samples "in atmospheric conditions planned for future lunar habitats or vehicles"; the page states no oxygen or pressure. So FM2 is not stated to cover solids in general: it covers one fabric, at those conditions.

LUCI used a rotating vehicle: the gravity came from rotation (11 RPM at a radius of 1.22 m), a Coriolis force bends the flame, and in one burn the gravity level dropped at 125 s. Every statement about LUCI therefore carries "simulated partial gravity (rotating vehicle)". It burned a cotton-fiberglass fabric and a 4-mm acrylic rod "in air at normal pressure"; the source gives no pressure figure in that passage. Its list of data (oxygen limits at lunar gravity, flame spread rate in exploration atmospheres) is under the heading "Potential Follow-on Objectives": PYRION calls it "listed by NASA as potential follow-on data, not results".

Where a source gives no figures, the plan says "not stated by the source" and does not guess.

## For engineers

PLANNED_SOURCES (engine/src/experiments.ts), each { id, name, file, page, slide?, quote, supports, qualifier? }:

| id | Document | Page |
|---|---|---|

| fm2-web | FM2 NASA web page (crawl-combustion-science-flammability-of-materials-on-the-moon-fm2-ecc5990d/page.html) | web |

| fm2-conditions | NTRS 20260001966 | PDF p. 10 (slide 9): "Test 1: 8.2 psia (+/- 0.3 psi), 37% O2 ..." to "Test 4: ... 25% O2" |

| fm2-fuel | NTRS 20260001966 | PDF p. 10 (slide 9): "Fabric sheets (Synergy Pro "Navy") mounted between thin metal frames" |

| fm2-limit | NTRS 20260001966 | PDF p. 5 (slide 4): expected lunar LOC of 24-26 % |

| luci-conditions | NTRS 20250010653 | PDF p. 12: "Two samples are burned simultaneously in air at normal pressure ..." |

| luci-rotation | NTRS 20250010653 | PDF p. 12: 11 RPM, effective radius 1.22 m |

| luci-coriolis | NTRS 20250010653 | PDF p. 17: Coriolis force pulls the flame away from the fuel axis |

| luci-gravity-drop | NTRS 20250010653 | PDF p. 43: gravity starts dropping at t = 125 s |

| luci-followon | NTRS 20250010653 | PDF p. 18: "Potential Follow-on Objectives" |

| luci-data | NTRS 20250010653 | PDF p. 18: flammability limits (%O2), flame spread rate |

LUCI_QUALIFIER = 'simulated partial gravity (rotating vehicle)' (experiments.ts:38) is attached to every LUCI source, statement and measure (qualifier). statements (plannedCoverage.statements): { source: 'FM2' | 'LUCI', material, covered[], sentence }; FM2's material is Synergy Pro "Navy" fabric.

FM2 covers a matrix point (coveredByFm2, experiments.ts:303) only when the target gravity regime is partial_gravity, pressure in psia is within 8.2 ± 0.3, and oxygen is within 0.5 % (relative) of 0.37, 0.33, 0.29 or 0.25. LUCI never marks points as covered, because its pressure is "normal pressure" without a figure.

Verified by test against the PDFs: every quote appears on its stated page (engine/test/experiments.test.ts, with pdftotext).

Sources: NTRS 20260001966 PDF pp. 5; 10; NTRS 20250010653 PDF pp. 12; 17; 18; 43; NASA FM2 web page (data/raw/nasa/crawl-...fm2...)

The remaining gap and the order of priority

The remaining gap is the part of the test matrix that no planned experiment is stated to cover. For a lunar-gravity target, it is every point that FM2's stated conditions do not fall on (FM2 starts at 8.2 psia with 37, 33, 29 or 25 % oxygen); for LUCI the sentence says coverage "is not stated by the source". For a target that is not at partial gravity (microgravity, for example), the whole matrix remains, because FM2 and LUCI are about lunar gravity.

The order of priority is a fixed rule, not a judgement:

  1. An untested regime first. If PSI has no test in your gravity regime: "Run at least one test in partial gravity: PSI has none."
  2. Then solid fuel. Solids are the gap that matters for cabin fires.
  3. Then the other fuel phases that are far outside (or have no comparable test), then outside, just outside, and combination.

Why solids first: NASA-STD-6001B Test 1, FM2 and LUCI all burn solid specimens (each quoted in the plan), and PSI records a solid fuel for a number of investigations; solids are the gap that matters for cabin fires. This is a statement about what these documents test; it does not say liquids or gases are unimportant.

## For engineers

remainingGap { points, sentence } (engine/src/experiments.ts): points = matrix points not in fm2Covered. Sentences: partial gravity: "N of M test points are not stated to be covered by FM2; for LUCI, coverage is not stated by the source."; otherwise "All M test points remain: no planned experiment in the downloaded sources is stated to cover this gravity regime."

priority: PriorityItem[] with kind ordering key _o: regime_untested 0, solid_fuel 1 (when solid coverage is not APPLICABLE), far_outside or no_comparable_test 2, outside 3, just_outside 4, combination 5; ties by fuel phase name; rank = position + 1. no_comparable_test for liquid and gas is skipped when the whole regime is untested. Solid sentence: "Solid fuel: no comparable test exists at this condition, and solids are the case that matters for cabin fires." or "Solid fuel: just outside the tested data; solids are the case that matters for cabin fires." (level sentence lower-cased).

solidsRationale { sentence, sources }: "Solids first: NASA-STD-6001B Test 1, FM2 and LUCI all burn solid specimens (quoted below), and PSI records a solid fuel for N investigation(s); solids are the gap that matters for cabin fires." sources = SOLIDS_RATIONALE_SOURCES: NASA-STD-6001B PDF p. 28 (five 30 cm × 6.5 cm specimens), NTRS 20260001966 PDF p. 10 (fabric), NTRS 20250010653 PDF p. 12 (fabric and 4-mm rod). N counts investigations with a fuel_phase = solid record in the corpus.

Saffire and BASS are not named in the rationale: no repository source states that, so the sentence rests only on the three quoted documents.

Sources: engine/src/experiments.ts; NASA-STD-6001B PDF p. 28; NTRS 20260001966 PDF p. 10; NTRS 20250010653 PDF p. 12

What would close this gap (tile button)

What it is. A small button on a tile.

What it shows. Opens a dialog with the engine's plan of experiments that would add evidence for that scenario.

How to use it. Click it to see the test matrix, the measurements and what FM2 and LUCI plan.

Example. Click it on NASA's Moon Base.

What it does not do. It is a PYRION proposal, not a NASA plan.

What would close this gap dialog

What it is. The dialog opened from a tile.

What it shows. The engine's proposal of experiments to add evidence for a condition.

How to use it. Read the sections; close with the cross or Esc.

Example. Open it for NASA's Moon Base.

What it does not do. It is a PYRION proposal, not a NASA plan.

Close the gap dialog

What it is. The cross.

What it shows. Nothing.

How to use it. Click it or press Esc.

Example. Close it.

What it does not do. It does not save anything.

Proposal label

What it is. The line "What would close this gap — PYRION proposal ...".

What it shows. That the plan is a testable proposal and not a NASA plan.

How to use it. Read it before quoting the plan.

Example. Check the label stays visible.

What it does not do. It cannot be hidden.

The gap

What it is. The first section.

What it shows. One sentence saying what is missing at this condition (for example no test in partial gravity).

How to use it. Read it first.

Example. "No PSI test was run in partial gravity".

What it does not do. It is about PSI, not about the real world.

Test matrix

What it is. A table of proposed test points.

What it shows. Oxygen and pressure steps around the target; margin points are marked.

How to use it. Use it to see how many tests would build an envelope.

Example. 15 points around 34 % and 8.2 psia.

What it does not do. The pressure steps of 15 % are a PYRION design convention, not NASA's.

Other axes to set

What it is. A list of axes the experimenter chooses.

What it shows. Gravity level, flow velocity and sample thickness, with sources where they exist.

How to use it. Read it before planning.

Example. Gravity 0.165 g, the lunar-g setting of NASA's ground-test centrifuge (NTRS 20260001966, p. 13).

What it does not do. The engine does not choose these values.

Measurements

What it is. What flammability testing measures.

What it shows. Quoted measures with their sources and the NASA standard NASA-STD-6001B.

How to use it. Hover a quote for file and page.

Example. Burn time and burn rate.

What it does not do. The standard is a historical copy with no DOI.

Solids first

What it is. Why the proposal puts solid fuels first.

What it shows. Quoted passages from the standard, FM2 and LUCI.

How to use it. Read the quotes.

Example. FM2 plans a solid fabric.

What it does not do. It is a rationale, not a requirement.

What NASA's planned experiments cover

What it is. FM2 and LUCI and what their sources state.

What it shows. Their quoted plans with qualifiers, for example LUCI's simulated partial gravity from a rotating vehicle.

How to use it. Read the quotes.

Example. FM2's four burns at 8.2 psia.

What it does not do. Whether FM2 covers a test point is stated only for that fabric.

Remaining gap

What it is. What is left after FM2's stated plan.

What it shows. How many proposed points FM2 is not stated to cover.

How to use it. Read it.

Example. "15 of 15 test points are not stated to be covered by FM2".

What it does not do. It does not predict what FM2 will find.

Priority

What it is. A numbered list.

What it shows. The gaps in order: regime, solids, then distance from the tested data.

How to use it. Read top to bottom.

Example. "Run at least one test in partial gravity".

What it does not do. It is an ordering rule by the engine.

Help center

Every page, button and number explained. Loading the topics… Press the ? menu, then Help mode, to point at anything.

Pick a topic on the left, or search.