PWR-HYBRID-3/OVERNIGHT_NOTES.md
Dane Sabo aba017c5b1 overnight wrap: summary notes + tighter-entry heatup PJ stub
- 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>
2026-04-21 14:49:48 -04:00

4.7 KiB
Raw Blame History

Overnight session summary

Date: 2026-04-20 → 2026-04-21 (overnight autonomous session)

Read this first when you open the laptop. Full details in journal/journal.pdf (newest entry: 2026-04-20-overnight-prompt-jump.tex).

TL;DR

  1. Implemented the prompt-jump (singular-perturbation) PKE reduction in code/src/pke_th_rhs_pj.jl. State drops 10 → 9 (n algebraic). Validated against full 10-state: max 0.1% relative error on n, max 7 mK on temperatures over 50 minutes of heatup. See docs/figures/validate_pj_heatup.png.

  2. Nonlinear reach on heatup PJ: 30× horizon improvement.

    • Before: full-state hit prompt-neutron stiffness wall at T=10s.
    • After PJ: T=60s and T=300s reach sound, clean.
    • T=1800s+ runs out of 100k step budget but returns a valid partial tube.
    • 5 of 6 inv1_holds halfspaces discharged at T=300s.
    • The t_avg_low_trip (T_c ≥ 280 °C) is violated by the TUBE (envelope dips to 272.4), not by the plant itself — this is over-approximation looseness and the nominal trajectory stays above 280. Refinement options listed in the journal.
  3. Scram PJ reach — script written and running as of commit time. Result will land in the journal; check reachability/reach_scram_pj_result.mat + the latest git commit.

  4. App v2 (Pluto) — three new cells in the predicate explorer:

    • §9b: live ingestion of reach_operation_result.mat; per-halfspace margins computed from JSON, rendered as a table with / badges.
    • §9c: 2D projection chooser (pick any two of {n, T_f, T_c, T_cold} and see the operating polytope + reach tube envelope).
    • §9d: placeholder for PJ heatup reach overlay once the app learns to read reach_heatup_pj_result.mat.
  5. Journal: now 32 pages, rebuilds cleanly via latexmk -pdf in journal/. Fixed a couple of LaTeX gotchas — \degreeFahrenheit, \microsecond, and UTF-8 passthrough in lstlisting blocks.

What's in this session's commits (most recent first)

  • 0a8348e walkthrough: PJ reach results (30× horizon win)
  • 3fdf5ee PJ reach 30× improvement (commits envelope summaries)
  • (earlier tonight) prompt-jump model + app v2 + journal scaffold

Things to look at in the morning

Priority-1 (actual scientific content)

  1. Pull up journal/journal.pdf. 32 pages, all the deep stuff. Most relevant entry: 2026-04-20-overnight-prompt-jump.tex.
  2. Look at docs/figures/validate_pj_heatup.png — the visual evidence that PJ is a sound reduction for slow heatup.
  3. Pluto app:
    cd app && julia --project=. -e 'using Pluto; Pluto.run()'
    # open predicate_explorer.jl
    
    §9b should show live margins from the refreshed reach result.
  4. Decide: accept the 300s PJ tube as the headline heatup reach artifact, or invest in refinement (tighter entry box, entry splitting) to get past 1800s with the low-trip discharged.

Priority-2 (followup ideas)

  • code/scripts/reach_heatup_pj_tight.jl exists (committed but not run tonight). Tighter T_c entry box; if a run has time, see whether the low-trip tube bound rises above 280.
  • code/scripts/reach_scram_pj.jl — scram reach. Either already in the commit log by morning, or still running.
  • Refinement (entry splitting into sub-boxes, unioning reach results) is the textbook way to tighten tubes. Haven't implemented.
  • Saturation-as-hybrid-sub-mode — still the open item for heatup soundness.
  • Polytopic/SOS barrier — still the open item for analytic certificate.
  • Parametric α uncertainty — still the open item for robust reach.

What NOT to forget

  • The PJ reduction introduces a ≤0.1% error. It's documented and bounded, but it's an approximation. "Sound w.r.t. PJ dynamics" ≠ "sound w.r.t. physical plant." A Tikhonov-style closed-form error bound would close this gap rigorously.
  • Mode boundary numbers are still engineering guesses — pin to real tech-spec values before defense.
  • reach_heatup_pj_result.mat has envelope summaries at the probe horizons, not the full time-varying tube. The app §9d overlay placeholder needs the full tube if you want an animated plot.

Context for whoever's picking this up

Starting commit tonight (pre-PJ work): 83c5cb8. Current HEAD: 0a8348e + whatever scram produced. Clean working tree expected (commits are atomic per task).

MATLAB is gone. Everything is Julia. Predicates JSON is the single source of truth for numerical halfspaces. Journal is the narrative source of truth. claude_memory/ has short pointers.

Was fun to work on. Go read the overnight entry, grab coffee, pick the next lever. 🦎


— Hacker-Split, overnight 2026-04-20 → 2026-04-21