PWR-HYBRID-3/journal/preamble.tex
Dane Sabo 3fdf5eed48 prompt-jump reach: 30x horizon improvement (10s -> 300s sound)
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>
2026-04-21 14:45:03 -04:00

202 lines
6.0 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

% preamble.tex — shared LaTeX setup for the HAHACS lab journal.
%
% Intent: a reader in 2030 picks up this journal and can rebuild the
% work from scratch. This file defines the visual vocabulary — code
% listings, figures, callouts — that each dated entry uses.
\documentclass[11pt, letterpaper]{article}
% --- Page geometry ------------------------------------------------------------
\usepackage[margin=1in, headheight=15pt]{geometry}
\usepackage{parskip} % blank line between paragraphs; no indent
\usepackage{microtype}
% --- Fonts --------------------------------------------------------------------
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{inconsolata} % monospaced font for code
% --- Math ---------------------------------------------------------------------
\usepackage{amsmath, amssymb, amsthm, mathtools}
\usepackage{siunitx}
\sisetup{detect-all, per-mode=symbol}
% siunitx doesn't ship \degreeFahrenheit; declare it via ensuremath.
\DeclareSIUnit\degreeFahrenheit{\ensuremath{^\circ}F}
% --- Graphics -----------------------------------------------------------------
\usepackage{graphicx}
\graphicspath{{./figures/}{../docs/figures/}}
\usepackage{caption}
\captionsetup{font=small, labelfont=bf}
% --- Code listings ------------------------------------------------------------
\usepackage{listings}
\usepackage{xcolor}
% Palette
\definecolor{code-bg}{HTML}{F7F7F2}
\definecolor{code-rule}{HTML}{D0D0C8}
\definecolor{code-comment}{HTML}{708070}
\definecolor{code-keyword}{HTML}{0050A0}
\definecolor{code-string}{HTML}{A04060}
\definecolor{code-number}{HTML}{806010}
\lstdefinelanguage{Julia}%
{morekeywords={abstract,break,case,catch,const,continue,do,else,elseif,%
end,export,false,for,function,immutable,import,importall,if,in,%
macro,module,otherwise,quote,return,struct,switch,true,try,type,%
typealias,using,while,mutable,global,local,let,primitive,where},%
sensitive=true,%
morecomment=[l]\#,%
morecomment=[n]{\#=}{=\#},%
morestring=[s]{"}{"},%
morestring=[m]{'}{'},%
}
\lstdefinestyle{labstyle}{
backgroundcolor=\color{code-bg},
basicstyle=\ttfamily\small,
breaklines=true,
breakatwhitespace=false,
captionpos=b,
commentstyle=\color{code-comment}\itshape,
frame=single,
framerule=0.5pt,
rulecolor=\color{code-rule},
keywordstyle=\color{code-keyword}\bfseries,
numberstyle=\tiny\color{code-comment},
showspaces=false,
showstringspaces=false,
showtabs=false,
stringstyle=\color{code-string},
tabsize=2,
numbers=left,
numbersep=6pt,
xleftmargin=14pt
}
\lstset{style=labstyle}
% Enable UTF-8 in listings (required for Greek letters and math symbols
% pasted from terminal output: Δ, λ, μ, etc.).
\lstset{
extendedchars=true,
inputencoding=utf8,
literate=
{Δ}{{$\Delta$}}1
{λ}{{$\lambda$}}1
{μ}{{$\mu$}}1
{α}{{$\alpha$}}1
{β}{{$\beta$}}1
{ρ}{{$\rho$}}1
{Σ}{{$\Sigma$}}1
{Λ}{{$\Lambda$}}1
{}{{$\leq$}}1
{}{{$\geq$}}1
{}{{$\to$}}1
{±}{{$\pm$}}1
{°}{{$^\circ$}}1
{×}{{$\times$}}1
{ε}{{$\varepsilon$}}1
}
\lstdefinestyle{terminal}{
backgroundcolor=\color{black!90},
basicstyle=\ttfamily\small\color{green!80!white},
commentstyle=\color{white!60},
frame=none,
numbers=none,
breaklines=true,
xleftmargin=0pt
}
% --- Callout boxes ------------------------------------------------------------
\usepackage[most]{tcolorbox}
\newtcolorbox{limitation}[1][]{%
colback=red!5!white,
colframe=red!55!black,
title=\textbf{Limitation},
fonttitle=\bfseries,
boxrule=0.6pt,
arc=2pt,
left=6pt, right=6pt, top=4pt, bottom=4pt,
#1
}
\newtcolorbox{derivation}[1][]{%
colback=blue!3!white,
colframe=blue!40!black,
title=\textbf{Derivation},
fonttitle=\bfseries,
boxrule=0.6pt,
arc=2pt,
left=6pt, right=6pt, top=4pt, bottom=4pt,
#1
}
\newtcolorbox{deadend}[1][]{%
colback=gray!8!white,
colframe=gray!50!black,
title=\textbf{Dead end},
fonttitle=\bfseries,
boxrule=0.5pt,
arc=2pt,
borderline west={2pt}{0pt}{gray!40},
left=6pt, right=6pt, top=4pt, bottom=4pt,
#1
}
\newtcolorbox{decision}[1][]{%
colback=green!3!white,
colframe=green!35!black,
title=\textbf{Decision},
fonttitle=\bfseries,
boxrule=0.6pt,
arc=2pt,
left=6pt, right=6pt, top=4pt, bottom=4pt,
#1
}
% TODO-for-A-pass marker: highlighted so we can find them for later deep-pass.
\newcommand{\apass}[1]{%
{\fboxsep=2pt\colorbox{orange!20}{\textbf{[A-pass]}}\,\textit{#1}}
}
% --- Session header ----------------------------------------------------------
% Usage: \session{2026-04-17}{afternoon, ~5 hr}{summary line}
\newcommand{\session}[3]{%
\noindent\rule{\linewidth}{0.8pt}
\vspace{2pt}
\noindent\textbf{\Large Session: #1} \hfill \textit{#2}\par
\vspace{2pt}
\noindent\emph{#3}\par
\vspace{4pt}
\noindent\rule{\linewidth}{0.4pt}
\vspace{6pt}
}
% --- Code macros --------------------------------------------------------------
\newcommand{\juliafile}[2][]{\lstinputlisting[language=Julia,caption={#2},#1]{#2}}
\newcommand{\matlabfile}[2][]{\lstinputlisting[language=Matlab,caption={#2},#1]{#2}}
\newcommand{\pyfile}[2][]{\lstinputlisting[language=Python,caption={#2},#1]{#2}}
% --- Cross-reference helpers --------------------------------------------------
\usepackage[colorlinks=true, linkcolor=blue!50!black, citecolor=blue!40!black,
urlcolor=teal!60!black]{hyperref}
\usepackage{bookmark}
\usepackage{cleveref}
% --- Headers & footers --------------------------------------------------------
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[L]{HAHACS lab journal}
\fancyhead[R]{\leftmark}
\fancyfoot[C]{\thepage}
\renewcommand{\headrulewidth}{0.3pt}
% --- A small quiet easter egg for anyone who greps the preamble ---------------
% "Looks ordinary on the surface but is something else underneath."
% — the name behind Split. Keep the journal honest; under every summary
% there's a derivation; under every derivation there's a doubt.