Records the journal scaffold + retroactive-entries + Julia migration
+ Pluto app work, with \apass{} markers for content that should be
expanded in a later A-pass. Keeps the discipline going from the
night the journal stood up.
Easter eggs:
- ASCII reactor + primary loop in journal/README.md (subtle, shows
where Q_sg flows in as a disturbance).
- Garden-lyric reference embedded in pke_params.jl docstring
("looks ordinary on the surface but is something else underneath")
— same lyric as the preamble.tex comment, referencing the name
behind Split. Hacker-Split's signature.
- 🦎 in the Pluto notebook header + closer.
Nothing functional, nothing that clutters the substance.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
140 lines
4.4 KiB
Markdown
140 lines
4.4 KiB
Markdown
# Lab Journal
|
|
|
|
```
|
|
___
|
|
,' `.
|
|
/ ___ \ n, C_i,
|
|
| ( UO2 ) | T_f, T_c, T_cold
|
|
\ ‾‾‾ / |
|
|
`.___,' v
|
|
||||| →→→→ [ controller ] →→→→ rods
|
|
|||||
|
|
‾‾‾‾‾‾‾‾‾‾‾‾‾ primary loop
|
|
___________
|
|
| SG | Q_sg(t) ∈ [Q_min, Q_max]
|
|
|____________|
|
|
```
|
|
|
|
The HAHACS invention log for the `pwr-hybrid-3-demo` preliminary
|
|
example. Each dated session gets an entry. The goal: a reader in 2030
|
|
should be able to rebuild the thesis work from this journal alone.
|
|
|
|
## Structure
|
|
|
|
```
|
|
journal/
|
|
preamble.tex shared LaTeX setup (fonts, listings, callouts, macros)
|
|
journal.tex top-level aggregator (builds all entries into one PDF)
|
|
entries/ dated session entries, one file per session
|
|
YYYY-MM-DD-{topic-slug}.tex
|
|
figures/ journal-specific figures (referenced from entries)
|
|
README.md this file
|
|
```
|
|
|
|
## Conventions
|
|
|
|
### Filename
|
|
|
|
`entries/YYYY-MM-DD-{topic-slug}.tex`. One file per session. If a day has multiple distinct sessions, use time-of-day in the slug (e.g., `2026-04-20-morning-predicates.tex` and `2026-04-20-evening-mega-session.tex`).
|
|
|
|
### Entry skeleton
|
|
|
|
```tex
|
|
\session{2026-04-17}{duration}{one-line summary}
|
|
|
|
\section{Session: ... (YYYY-MM-DD)}
|
|
\label{sec:YYYYMMDD}
|
|
|
|
\subsection*{Goal}
|
|
What I set out to do and why.
|
|
|
|
\subsection*{What landed}
|
|
...
|
|
|
|
\subsection*{Key decisions}
|
|
...
|
|
|
|
\subsection*{Dead ends}
|
|
...
|
|
|
|
\subsection*{Derivations}
|
|
...
|
|
|
|
\subsection*{Results}
|
|
...
|
|
|
|
\subsection*{Limitations recorded}
|
|
...
|
|
|
|
\subsection*{Open at close}
|
|
...
|
|
```
|
|
|
|
Entries compile standalone (each starts with `\input{../preamble.tex}` wrapped in a conditional so it only pulls preamble when not already loaded by `journal.tex`), or together via `journal.tex`.
|
|
|
|
### Two entry styles
|
|
|
|
- **A-style (deep / invention-log)**: full derivations, code commentary, dead-ends, embedded figures, terminal output where useful. Used for retroactive entries and sessions that land meaningful artifacts.
|
|
- **B-style (narrative + pointers)**: end-of-session notes. Uses `\apass{...}` callouts to flag spots that need a later A-pass.
|
|
|
|
### Callout boxes
|
|
|
|
From `preamble.tex`:
|
|
|
|
| Environment | Use |
|
|
|---|---|
|
|
| `derivation` | Math derivations |
|
|
| `decision` | Design choices with rationale + alternatives |
|
|
| `deadend` | Paths that didn't work |
|
|
| `limitation` | Soundness gaps, known-approximate behavior |
|
|
|
|
Plus the inline `\apass{text}` marker for A-pass TODOs.
|
|
|
|
### Code inclusion
|
|
|
|
- `\juliafile[options]{path/to/file.jl}` — includes a Julia source file as a numbered listing.
|
|
- `\matlabfile[...]{...}` — for MATLAB sources.
|
|
- Or inline with `lstlisting` environment and `language=Julia` for snippets.
|
|
|
|
Always include the path as the listing caption so readers can find the file.
|
|
|
|
### Figures
|
|
|
|
Figures live in `../docs/figures/` (shared with the thesis) or `figures/` (journal-only). The preamble sets `\graphicspath` to check both.
|
|
|
|
Always include:
|
|
1. A descriptive caption (what's on axes, what's being shown).
|
|
2. A discussion in the surrounding prose — *what the figure proves or illustrates*. Figures without discussion are noise.
|
|
|
|
### Terminal output
|
|
|
|
For a numerical result or an error that drove a decision, include the actual terminal text in a `lstlisting` block with `style=terminal`:
|
|
|
|
```tex
|
|
\begin{lstlisting}[style=terminal]
|
|
TMJets: 10583 reach-sets
|
|
T_c envelope: [274.45, 295.0] C
|
|
FAILED: AssertionError: radius must be nonnegative
|
|
\end{lstlisting}
|
|
```
|
|
|
|
Don't include full logs — only the lines that changed what you did next.
|
|
|
|
## Build
|
|
|
|
```bash
|
|
cd journal
|
|
latexmk -pdf journal.tex # whole journal as one PDF
|
|
latexmk -pdf entries/2026-04-17-controllers-linear-reach.tex # one entry
|
|
```
|
|
|
|
Requires TeX Live with `tcolorbox`, `listings`, `inconsolata`, `siunitx`, `cleveref`, `hyperref`, `fancyhdr`. All in the standard distribution.
|
|
|
|
## Not a replacement for
|
|
|
|
- `claude_memory/` — short AI-context notes, Markdown, different audience.
|
|
- `reachability/WALKTHROUGH.md` — standalone doc summarizing current state of reach analysis.
|
|
- Git commit messages — per-commit rationale for code changes.
|
|
|
|
The journal is the *chronological narrative* of the work. The others are snapshots, summaries, or pointers. They're all legitimate; they do different things.
|