Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,11 @@ When you change or add a model, update the docs in the same PR:
line at the top of the section. A green test that asserts a known disagreement
is a `pinned` row, not a `validated` one; if you cannot say which of the four
statuses your new gate has, the gate is not finished. An asserted constant with
no test behind it gets an `ungated` row rather than no row.
no test behind it gets an `ungated` row rather than no row. The census and the
four statuses are **enforced** by `tests/docs.rs`, which fails with the
corrected line — but only the counts are mechanical. A row's *number* is
checked by nobody: the ground truth for it is the `assert!` in the gate the row
names, so quote that, and re-read it whenever a default changes.
- **`docs/M*_SPEC.md`** — per-milestone pre-spec gates and design records. New
milestone work is spec'd here before it is implemented.
- **`README.md`** — the milestone status table and the CLI examples. A finished
Expand Down
22 changes: 15 additions & 7 deletions README.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/M6A2_SPEC.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ Stated up front, in the D5 spirit that M6a learned and M6c applied.

**Not gateable: the position of the `P_ig` curve.** Whether a given `Cn²`
ignites the air depends on M6a's absolute breakdown threshold, which is M6a's
explicitly ungated quantity (4.8–7.0× above the measured Thiyagarajan & Thompson
explicitly ungated quantity (3.90–4.69× above the measured Thiyagarajan & Thompson
curve, inside the 3–10× inter-lab scatter). Every `P_ig(Cn²)` this rung produces
inherits that offset. The curve's location on the `Cn²` axis is therefore **a
statement about the model, not about the world**, and must be labelled so
Expand Down
50 changes: 45 additions & 5 deletions docs/M6C_SPEC.md
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ per hydro step dt:

The velocity gates are independent of M6a. The **ignition time and position**
are not: they come from `AirBreakdown`'s absolute threshold, which is M6a's
explicitly ungated quantity (4.8–7.0× above the measured T&T curve, inside the
explicitly ungated quantity (3.90–4.69× above the measured T&T curve, inside the
3–10× inter-lab scatter). So M6c can pass every velocity gate while lighting
the spark at the wrong intensity. This is a stated limitation, not a blocker —
`D` depends on the absorbed `S` at the front, not on where ignition happened —
Expand Down Expand Up @@ -450,6 +450,25 @@ velocities, and the spec says so in advance rather than discovering it:
- Radiation losses and incomplete absorption push the same direction and are
also out of scope (§ NOT in scope).

**Amended (M6d): the first bullet is no longer available as an excuse.** Radial
relief is modelled, and its size is measured and pinned:
`δ = 1 − D/D_wide` = **0.230** at `R_b·α` = 3.2 and 0.305 at 1.6, i.e. a
finite-diameter beam costs roughly a quarter of the front speed. That is a real
effect and it is **not the whole ~2× gap** — so relief is part of the answer,
not the answer. The remaining candidates are the ones already named here
(radiation losses, incomplete absorption) plus the production EOS and, new with
M6d, the assumption that the beam travels in straight pencils and is not
refracted by the plasma it creates.

M6d also found something that changes how any future G7 comparison must be
made: the modelled front is **transversely unstable**, so a single run's speed
carries the instability's signature and a comparison against a 1-D calculation
would attribute that to relief. See [M6D_SPEC.md](M6D_SPEC.md) § G14.

**G7 therefore remains ungated for exactly one reason: there is no anchored
measured dataset.** That is open question 1 below, inherited by M6d and still
unpaid.

So the honest claim M6c can make is: **the 1-D model agrees with CJ/Raizer where
that theory applies, and the gap to experiment is in the predicted direction and
of the predicted order, for reasons the model has explicitly excluded.** That is
Expand Down Expand Up @@ -485,7 +504,11 @@ is labelled as such.
here, it is unreachable from this solver. It needs a non-paraxial method,
which is a different solver, not a `Medium`.
- **Radial / quasi-1-D expansion.** Planar first. This is also precisely why
G7 is ungated and expected high.
G7 is ungated and expected high. **Retired (M6d).** Axisymmetric `(r, x)`
hydro landed in `src/euler2d.rs`, and the relief deficit is measured and
pinned at 23 % of the front speed — see [M6D_SPEC.md](M6D_SPEC.md). The bullet
stays here, struck through rather than deleted, so the record of what M6c did
not do remains readable.
- **Runtime Mutation++ FFI.** Offline tabulation only (D8/P3). Re-opened only if
the frozen LTE table provably fails.
- **Non-LTE / two-temperature plasma**, and finite-rate ionization kinetics.
Expand All @@ -495,11 +518,14 @@ is labelled as such.
- **LSC and LSR regimes.** LSD only; the regime is asserted, not assumed.
- **Recombination / afterglow / multi-pulse.**
- **2-D/3-D hydro.** The propagator is 3-D; the hydro is not, by construction.
**Narrowed to 3-D by M6d**, which made the hydro axisymmetric. 3-D remains out
of scope: axisymmetry assumes no azimuthal structure.

## Open questions

1. **Which measured LSD dataset anchors G7.** The M6c counterpart of M6a's
digitized anchor, and the one input this spec cannot supply itself. Needs
1. **Which measured LSD dataset anchors G7.** *Inherited by M6d and still
open — and now the **only** thing keeping G7 ungated.* The M6c counterpart of
M6a's digitized anchor, and the one input this spec cannot supply itself. Needs
the same treatment
`tests/data/tt2012_*.csv` got: a named paper, the figure number pinned in the
provenance header at digitization time, and the setup quoted so the solver's
Expand Down Expand Up @@ -547,7 +573,21 @@ is labelled as such.
what *sustains* it — which is the known experimental situation, where LSD
waves in clean air are started on a target, on an aerosol, or by a separate
spike. M6a's ungated absolute level does not touch the conclusion: the gap is
10⁵ against a ~7× uncertainty. Pinned by
10⁵ against a ~7× uncertainty.

**Amended (M6a, 2026-07-30/31): the numbers above are the ones this milestone
landed with, and the shape of the claim has since changed.** The
distribution-resolved closure removed the hard `ε_∞ = U_i` cutoff, so a longer
pulse now buys *something* rather than nothing, and seed production raised the
short-pulse end. The threshold is therefore **asymptotic rather than flat**:
8.815×10¹⁵ at 6 ns falling to 6.745×10¹⁵ by 1 ms, a bounded 1.31× fall that is
flat to 1 % over the last two decades. The focus figure is now 6 % over a 500×
range, and the level uncertainty is 3.90–4.69× rather than ~7×. **The
two-stage argument is untouched**, which is the only thing this step depended
on: a bounded fall to a floor is still an intensity criterion, and the drive
still sits ~10⁵ below it. What would break it is a threshold falling without
limit, and the gate below asserts that it does not. Current numbers live in
`docs/MODELS.md` § "The `lsd` demonstration run". Pinned by
`the_sustaining_drive_is_far_below_the_breakdown_threshold`.
5. **How hot the run is allowed to get** — *new, and answered (step 4).* The
`Z̄ ≡ 1` ceiling recorded under "Property closure" bounds where `α_IB` can be
Expand Down
Loading
Loading