- OVERNIGHT_NOTES.md: read-this-first TL;DR for morning review.
Points at journal.pdf (32 pages, latest entry has all results),
validate_pj_heatup.png, and the Pluto app. Lists priority-1 actions
(look at data, decide on refinement vs accept-300s-tube) and
priority-2 followups (scram reach ingestion, entry refinement,
saturation hybrid, SOS barriers, alpha parametric).
- reach_heatup_pj_tight.jl: script committed but not yet run tonight.
Tighter X_entry on T_c (width 6 K vs baseline 14 K) to test whether
the low-T_avg-trip tube-looseness is entry-box-width driven or
reach-growth driven.
Scram PJ still compiling as of this commit; will land separately
when it completes.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Results from the overnight TMJets run with the prompt-jump model:
T=60s: PASSES (10,044 reach-sets, 205 s wall)
T=300s: PASSES (27,375 reach-sets, 591 s wall)
T=1800s+: partial — exhausts 100k step budget past ~300s
At T=300s the envelope is:
n: [-0.00156, 0.0103] (slightly negative = sound overapprox)
T_c: [272.4, 295.0] C
T_f: [261.2, 302.7] C
T_cold: [270.0, 289.5] C
Discharges 5/6 inv1_holds safety halfspaces at 300s:
fuel_centerline: +897 K margin ✓
t_avg_high_trip: +25 K margin ✓
t_avg_low_trip: VIOLATED (tube dips to 272.4, limit 280)
n_high_trip: huge margin ✓
cold_leg_subcooled: +15 K margin ✓
The low_trip violation is TUBE looseness, not physical — nominal sim
only dips to ~280 transiently. Fixable by tighter X_entry, higher
orderQ, or refinement. Open item.
Journal updated with full results table + limitation box. scram PJ
reach ready to run but not yet executed (structure similar, simpler).
Fix: siunitx \degreeFahrenheit, \degree, \microsecond now work via
\DeclareSIUnit in preamble. UTF-8 passthrough in listings via
literate= map for Δ, λ, μ, α, β, ρ, Σ, Λ, ≤, ≥, →, ±, °, ×, ε.
Journal now compiles clean: 32 pages, 0 errors.
App v2 Pluto cells land under §§9b–9d: live reach-result ingestion
with computed per-halfspace margins, 2D projection chooser, PJ-reach
overlay placeholder.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Singular-perturbation reduction of the PKE+T/H system: set dn/dt=0,
solve algebraically n = Λ·Σλ_i·C_i / (β-ρ). State drops 10 -> 9 (no
n), removes Λ⁻¹ stiffness. Validated against full state on the heatup
scenario:
t [s] |Δn|/n_full T_c err [K]
60 3.7e-5 4e-6
300 3.8e-4 1.9e-4
1200 1.0e-3 2.2e-3
3000 5.0e-4 7.2e-3
Maximum relative error 0.1% on n, peak 7 mK on temperatures over
50 minutes. PJ approximation is excellent for slow heatup transients
(sub-prompt-critical regime).
Files:
- code/src/pke_th_rhs_pj.jl: reduced 9-state RHS
- code/scripts/validate_pj.jl: side-by-side sim
- code/scripts/reach_heatup_pj.jl: TMJets reach with PJ model
(probing T = 60, 300, 1800, 5400 s)
App v2 (Pluto):
- §9b: live ingestion of reach_operation_result.mat with per-
halfspace margins computed from JSON-defined inv2_holds.
- §9c: 2D projection chooser (n, T_f, T_c, T_cold) with reach
tube envelope overlay.
- §9d: PJ heatup reach summary (placeholder until first run lands).
Journal:
- Added 2026-04-20-overnight-prompt-jump.tex with PJ derivation,
validation table, soundness ledger update. apass markers for
the in-progress reach results.
This commit captures state mid-run; next commit will add the
populated reach results once TMJets returns.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Full toolchain port. Numerical equivalence verified against MATLAB:
- main_mode_sweep.jl: every mode's final state matches MATLAB to 3-4 dp
- reach_operation.jl: per-halfspace margins match MATLAB exactly
- barrier_lyapunov.jl: per-halfspace bounds match (best Qbar from sweep
yields max|dT_c| = 33.228 K either side)
- barrier_compare_OL_CL.jl: OL gamma 1.038e13, CL gamma 1.848e4
matching the MATLAB result; LQR helps by ~20,000x on every halfspace.
Phase summary:
Phase 1: pke_solver.jl, plot_pke_results.jl (Plots.jl), main_mode_sweep.jl
Phase 2: reach_linear.jl, reach_operation.jl, barrier_lyapunov.jl,
barrier_compare_OL_CL.jl, load_predicates.jl
Phase 3 (this commit): delete plant-model/ entirely, delete reach
code from reachability/ keeping predicates.json + docs,
git mv julia-port/ -> code/, update root README + CLAUDE,
write code/CLAUDE.md and code/README.md, update reach
README + WALKTHROUGH file paths, journal preamble note
that pre-port entries reference MATLAB paths.
Why now: prompt-neutron stiffness in nonlinear reach made it clear we
need TMJets, which is Julia. Already had the Julia plant model
working and matching MATLAB. Two languages = two sources of truth =
two places to drift. One language, one truth.
Manifest.toml gitignored. .mat results gitignored.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>