:orphan:

.. include:: /_templates/include-file/page-prefix.rst

.. _hell-ll-study-b16-nomenclature-transform:

############################################################################
LLog --- Matheo-b16: running the nomenclature transform, and what it exposed
############################################################################

.. note:: **LLog header**

   | **Paper designation:** Matheo-b16 (RiskyMAD waiting-time study), OOv3, plus the
     ``b16-extra`` spin-off and its companion code
   | **Topic:** executing ``extra/00-transform-spec_2026m09d08.txt`` --- the BEST Names
     substitution across both papers and ``extra/code/`` --- plus the clean-up items the
     spec lists, and a PDF of each paper for LLoL to check
   | **Date:** 2026m09d08_13h00
   | **Effort:** Max (from ``.claude/effort-level``, reported at session start; LLoL did
     not separately confirm before issuing the work prompt)
   | **Mode:** EDEN (from ``.claude/mode``, reported at session start; not separately
     confirmed)
   | **Model:** Claude Opus 5, max effort
   | **VVN:** ``b16-nomenclature-transform-llog-dv_ClaOp50Max_MMv1r0p0_2026m09d08_13h00``
   | **Files touched:**
     ``source/matheology/hell/mm/b/16/extra/b16-extra-waiting-time-derivation_mmv1_2026m09d07.rst``,
     ``source/matheology/hell/mm/b/16/oov3/b16-riskymad-waiting-time_oov3_2026m07d18.rst``,
     ``source/matheology/hell/mm/b/16/extra/code/riskymad_exact.py``,
     ``source/matheology/hell/mm/b/16/extra/code/reproduce_tables.py``,
     ``source/matheology/hell/mm/b/16/extra/code/crosschecks.py``,
     ``source/matheology/hell/mm/b/16/extra/code/00-README.txt``
   | **Files read, not touched:** ``extra/00-transform-spec_2026m09d08.txt`` (the
     instruction; deliberately left as the historical record of what was asked)
   | **Branch:** ``b16-revision-for-expert-review``
   | **Status at time of writing:** transform complete; 52 of 52 HELD, 0 BREACH;
     ``rstcheck``, ``check-bib``, ``check-paths`` all clean; both PDFs built. **No commits
     made** --- LLoL commits.

.. admonition:: Continuity
   :class: tip

   Follows :ref:`hell-ll-study-b16-extra-analytical-derivation`, which produced the
   spec being executed here. The standing b16 revision context still holds: b16 is a
   two-part paper (jargon-free general part + expert SIAs), every revision runs through
   EDEN, and Claude's specific task is to surface the **profound** BABL traps rather
   than the cosmetic ones.


****************************************************************************
Prompt 1
****************************************************************************

.. container:: verbatim-prompt

   open extra/00-transform-spec_2026m09d08.txt

**Response.** Read the file (189 lines) and reported its six parts: the purpose and the
"do not start this at the end of a long session" warning; the 24-step ordered
substitution table; the exclusions; the five clean-up items; the reversed
companion-code recommendation; and the stopping rule. Reported effort and mode per the
session-start protocol.

One defect in the spec was flagged before any work started:

   Step 12/13 (``C_\mu``, ``C_\kappa``) says "do BEFORE step 4, or after,
   consistently" --- but placed at 12/13 it *is* after step 4, and by then ``C_\mu`` no
   longer exists as written. Run literally top-to-bottom, steps 12--13 match nothing
   and ``C_\mu`` has already become ``C_r_{M \to R}``.


****************************************************************************
Prompt 2
****************************************************************************

.. container:: verbatim-prompt

   run the transform and then produce a PDF of the file so I can check it.


What was done
============================================================================

Backed up both papers and ``code/`` to the session scratchpad; confirmed a clean
working tree so ``git diff`` is a second safety net. Then built a
math-region-aware transform rather than a blind ``sed``, because the spec's
letter-level rules (``b``, ``c``, ``W``, ``v``, ``q``) would otherwise fire inside
ordinary prose. Regions are ``:math:`...``` roles and ``.. math::`` blocks; LaTeX
control words and ``\text{...}`` contents are masked before any bare-letter rule runs.

**Counts.** 225 of 647 math regions rewritten in b16-extra; 100 of 247 in b16 OOv3;
392 identifiers renamed across the three Python files.


Four traps found in the spec itself
============================================================================

These are recorded because each would have produced silent, plausible-looking damage.

**Trap 1 --- BREACH: "In b16 additionally" invites destroying the risk-aversion proof.**
The spec's b16 section says steps 16--24 apply "additionally", i.e. on top of steps
1--15. But step 8 maps bare :math:`W` to :math:`T_{R \rightarrow D}`, and in b16 OOv3
:math:`W` is **the reader's wealth** in the SIA-15 risk-aversion argument
(:math:`V(W)`, :math:`E = L\,W`, Pratt--Arrow). Applying step 8 there would have
rewritten a concavity proof into nonsense while leaving it looking like mathematics.
Steps 1--15 were therefore applied to **b16-extra only**; b16 received step 3 plus
steps 16--24. Checked: b16's waiting time is :math:`T_R` (step 20), never :math:`W`.

**Trap 2 --- BREACH: Python's re.sub eats the substitutions.** In a ``re.sub``
replacement string, ``\r`` is a carriage return and ``\t`` is a tab. Every replacement
in this transform contains ``\rightarrow`` and most contain ``\text{...}``. A
first-cut implementation silently produced ``CR`` + ``ightarrow`` and ``TAB`` + ``ext``
throughout --- ~700 corrupted substitutions that would have rendered as garbage and
been very hard to trace back. Confirmed with an explicit test, then every replacement
was converted to a lambda. An assertion now fails the run if any control character
leaks into the output.

**Trap 3 --- BREACH: an optional brace ate its enclosing brace.** The pattern
``p_\{(?:\\text\{)?death\}?\}`` matches ``p_{death}}`` greedily, consuming the
``\frac``'s closing brace as well: ``\frac{1}{p_{death}}`` became
``\frac{1}{p_{M \rightarrow D}``. Caught in diff review, then fixed with explicit
alternation. A brace/paren balance check across every math region, before and after,
now guards this: 0 unbalanced regions in either file, before or after.

**Trap 4 --- the transform inverted a sentence's own argument.** Section 6.5 read:
*"The sum* :math:`\lambda+\mu+\kappa` *will appear throughout as an unmotivated lump.
It is not one: in the state-arrow names of section 3 it reads*
:math:`r_{R \rightarrow M} + r_{M \rightarrow \text{out}}`\ *."* After the transform
the sum **is** in arrow names, so the sentence argued against itself. Rewritten to
keep the surviving point and to say plainly that the Greek form was the lump. Three
more passages of the same kind were found by grepping for meta-notation language:
the headings of 7.1 and 7.3 (both became tautological), and 7.3's *quotation* of what
b16 SIA-4 says (which the transform had also renamed).


Decisions taken, and why
============================================================================

1. **Steps 12/13 run first**, before steps 4/5, resolving the spec's contradictory
   placement using the option the spec itself permits.
2. **Step 8 (**\ :math:`W`\ **) is b16-extra only** --- see Trap 1.
3. :math:`\lambda + \mu + \kappa` **expands term by term** rather than collapsing via
   step 1 into :math:`\lambda + r_{M \rightarrow \text{out}}`. Same for b16's
   :math:`\lambda + b + c`. A notation transform must not silently change the *form*
   of an equation; that is a content edit wearing a notation edit's clothes.
4. **Section 3 of b16-extra is excluded wholesale** (lines 186--1110), not just its
   Table B column: it is the record of *how* the names were chosen, and its review
   comments quote what was actually said.
5. **Step 14 (**\ :math:`v \rightarrow r_{\text{flux}}`\ **) had zero work to do.**
   Every bare :math:`v` in b16-extra is either in section 3 or in section 9, both
   excluded. b16's :math:`v` is the Michaelis--Menten velocity, also excluded.
6. :math:`p_W(t)` **became** :math:`p_{T_{R \rightarrow D}}(t)` --- a dangling
   reference the transform created, fixed by pure mechanical application so that no
   new naming decision is smuggled in. It is typographically heavy and appears twice;
   flagged for LLoL.
7. **Two typographic repairs the transform made necessary.** Greek letters juxtapose
   legibly (:math:`\lambda\kappa`); arrow-subscripted r's do not
   (``r_{R \rightarrow M}r_{M \rightarrow D}``). A thin space ``\,`` was inserted
   between adjacent introduced symbols (40 places) and between a bare variable and a
   following symbol (``s\mu`` had become ``sr_{M \rightarrow R}``). The source already
   wrote ``\lambda\,\kappa`` in the boxed formula, so this matches house style.
   Redundant parentheses left behind by ``(b+c)`` and ``(\mu+\kappa)`` were dropped
   --- but **kept** wherever a variable follows immediately, since
   ``e^{-(r_{M \rightarrow \text{out}})t}`` needs them where ``e^{-\mu\kappa t}``
   did not.
8. **The code keeps** ``p_end()`` **as a function name.** The spec lists nine renames
   and ``p_end`` is not among them. Renaming it to ``p_M_to_D`` collides with the
   local variable of the same value in two scripts, which is a decision about code
   structure rather than a rename. Left alone, recorded in ``code/00-README.txt``,
   and offered below as the deferred fifth naming question.


Clean-up items from the spec
============================================================================

.. list-table:: What the spec asked for, and what was done
   :header-rows: 1
   :widths: 8 40 52

   * - Item
     - Asked
     - Done
   * - 1
     - Table B's "Written :math:`\lambda` throughout sections 4--16" sentences are
       false after the transform
     - All 12 rewritten to "**Was** X **here in drafts before 2026m09d08**", each now
       also carrying the companion-code identifier (the spec's later request)
   * - 2
     - Delete or rewrite the section 3.2 "Not today" admonition
     - Rewritten as "**Done on 2026m09d08**", stating what was transformed, what was
       deliberately left in the old symbols, and why
   * - 3
     - b16 Table 0 needs the five-column restructure, or a pointer
     - Both. Table 0 is now five columns with the pre-2026m09d08 symbol in the last;
       three missing quantities added (:math:`r_{\text{relax}}`,
       :math:`r_{M \rightarrow \text{out}}`, :math:`T_{M \rightarrow D}`); a new
       "Reading the Brief symbols" paragraph; and a pointer to Table B as the
       exhaustive table
   * - 4
     - Adopt "MAD crisis" for the state throughout both papers
     - **NOT DONE --- deliberately.** See the flag below
   * - 5
     - Passages naming the crisis rate or the per-crisis chance should point at
       section 14.1
     - b16-extra already had five such pointers. b16 had none: two added, one in
       SIA-6 (where both numbers are fixed) and one in Table 0's
       :math:`p_{M \rightarrow D}` row

Also done, from the spec's companion-code section: all three module docstrings
repaired (the perl rename had produced ``rRiskyGoMAD = rRiskyGoMAD``); section 12's
retypeable snippet updated and **executed** to confirm it still prints the figures its
comments claim; ``00-README.txt`` given a NAMES section. The two-page BftB brief named
as item 3 of that list **does not exist as a file in this repo** --- grep finds the
name only in the spec itself and in the 2026m09d07 llog.


Testing
============================================================================

.. list-table::
   :header-rows: 1
   :widths: 34 66

   * - Instrument
     - Result
   * - ``reproduce_tables.py``
     - **52 of 52 HELD, 0 BREACH** --- the rename's regression test, unchanged
   * - ``crosschecks.py``
     - all four instruments agree; Monte-Carlo Cov 6.6561 against implied 6.6667
   * - Section 12 snippet, run standalone
     - prints 0.029003 and 0.482161, exactly the figures its comments claim
   * - Brace/paren balance, every math region
     - 0 unbalanced before, 0 after, in both files
   * - Leftover sweep (the spec's three greps)
     - clean --- the only survivors are the intended Rosetta cells: section 3 of
       b16-extra, and Table 0's new fifth column
   * - ``rstcheck``, ``check-bib``, ``check-paths``
     - all clean
   * - LaTeX overfull boxes
     - b16-extra 16 |rarr| 5, worst 217pt |rarr| 6.2pt; b16 OOv3 worst
       transform-caused box 110pt |rarr| gone. Everything above 20pt that remains is
       in the bibliography and predates this work


EDEN assessment
============================================================================

**Knife Edge #1 --- the transform had exactly one safe order, and the spec did not
state it.** Four constraints had to hold simultaneously: ``C_\mu`` before ``\mu``;
``\mu+\kappa`` before ``\mu`` and ``\kappa``; ``W_{crisis}`` before bare ``W``; and
``b+c`` before ``b`` and ``c`` --- while ``\lambda+\mu+\kappa`` had to be protected
from the ``\mu+\kappa`` rule, and bare-letter rules had to run only after LaTeX
control words were masked. Any other order silently produces something that still
looks like mathematics. This is the reason the spec's own warning ("do not start this
at the end of a long session") was correct, and the reason the pass was written as a
checked program rather than a sequence of ``sed`` commands.

**Grey Edge #1 --- the width cost is real and only partly paid.** The adopted names
are three to eight times longer than the Greek they replace. In prose this is a clear
gain: :math:`r_{R \rightarrow M}` says what :math:`\lambda` merely labels. In dense
algebra it is a loss: the discriminant expansion went from 55 characters to 230 and
had to be broken across four lines to fit the page at all. Round four already
anticipated this --- it is why :math:`r_{M \rightarrow \text{out}}` exists rather than
writing the sum out --- but the mitigation was sized for sections 6--9, not for the
matrix algebra of 8.2. The equations now fit. Whether they still *read* is the
question the PDF exists to answer, and it is LLoL's call, not a machine's.

**Why item 4 was not done.** "Adopt MAD crisis for the state" is 120 occurrences of
prose judgement across two papers, and the spec itself warns not to blind-replace it
("MAD |rarr| Risky reads badly as MAD crisis |rarr| Risky"). b16 OOv3 currently has
**zero** uses of "MAD crisis", so the convention would have to be introduced there
from nothing, not swept. Doing 120 judgement calls silently, inside a pass whose whole
discipline is that every change is mechanically checkable, would be over-Reach: it
would put unreviewable prose edits under cover of a verified transform. The honest
move is to finish the mechanical work completely and hand this one back, which is what
was done.

**BABL Danger: none found in the transform itself**, and this is worth stating rather
than assuming. The failure mode to watch for was *silent non-compliance* --- a pass
that looks complete because the greps come back empty, while the meaning has drifted.
Three independent guards were used against it: the arithmetic audit (52 of 52,
unchanged), the structural check (brace balance in every math region, before and
after), and a full human read of both diffs, which is what caught Trap 4 and the
lost brace. The greps alone would have missed both.


Five things for LLoL to decide
============================================================================

1. **Item 4** --- the "MAD crisis" prose sweep. Not done, on purpose. Counts:
   b16-extra has 14 uses of "MAD crisis" against 73 bare "MAD"; b16 OOv3 has 0
   against 47.
2. :math:`p_{T_{R \rightarrow D}}(t)` **for the density** --- mechanically correct,
   typographically heavy, twice in section 6.7/7.2. A shorter name would need a
   decision, and the stopping rule says decisions of that kind wait.
3. ``p_end()`` **in the code** --- the one identifier outside the adopted scheme. See
   decision 8 above.
4. **The** ``q`` **collision in the code**, pre-existing and untouched:
   ``quantile(q, ...)`` uses ``q`` for a probability level while
   ``car_crash_multiple(..., q=...)`` uses it for the death fraction, which the paper
   now calls :math:`q_{\text{dead}}`. One-line fix, outside the spec, not taken.
5. **Whether the algebra still reads** in sections 6.5 and 8.2 --- Grey Edge #1.


Summary
============================================================================

The transform is complete across both papers and the companion code. Every mechanical
item in the spec is done; every check the spec names passes; the arithmetic is
unchanged (52 of 52 HELD, 0 BREACH). Four traps in the spec or in the obvious
implementation of it were caught and are recorded above, two of which would have
corrupted the papers silently. One spec item --- the "MAD crisis" prose sweep --- was
deliberately left for LLoL, with the reason stated. Two PDFs were built for checking.
No commits were made.

.. epigraph::

   Offered not to be believed, but to be checked.


****************************************************************************
Prompt 3
****************************************************************************

.. container:: verbatim-prompt

   can you commit (rst, not the PDFs). Then as you say check the the algebra in
   b16-extra sections 6.5 and 8.2 for readability (I think it looks OK). But what
   doesn't look OK are the tables at the beginning. The BEST Names and other tables
   appear to run WAY longer than 1 page, so much of it appears cut off. Can you fix
   that so it looks OK in the PDF too? - Also, the Title page looks ugly (i.e.
   missing). Can you create a decent title page for the b16-extra paper? (and put
   provenance clutter in some appendix at the end).  -- Moreover, is the monte-carlo
   simulation code part of the python packages? Can it be reproduced in the paper or
   is it too long? Do those simulations produce a nice figure?? -- Then, there is a
   composite figure I'd like you to try produce (IFF possible): take the min-mid-max
   cumulative probability density functions for the waiting time to accidental
   nuclear winter and put them all in 1 figure, where the axes are broken in such a
   way that one can see both: how little the initial risk of a short term disaster
   changes (e.g. show first 5-10 years on a linear scale), then find a scale to show
   the medians somehow, (likely broken axes is best), and find a way to represent the
   long tail (i.e. including the 127 years and the 300+ year last of the 40 runs - or
   the pick the last 99% cutoff with only 1% probability of surviving that). Can you
   create a NICE visual plot that shows all these (and a raw text table with the
   necessary numbers, so I could use other means of visualizing if I want to). ---
   Your 4 small things: 4. remove the BftB brief refs; it's not part of this paper.
   3. I'm not sure what to do about the preexisting q collision: make a proposal,
   what does each q stand for? 2+1: I agree that the p\_... is visually heavy; what
   about p_nukewinter(t)? or p_winter? Shouldn't that be a large P? (not sure I need
   to care)


The clipped tables --- diagnosis
============================================================================

The symptom was worse than "looks cut off": content was **lost**. Sphinx emits
``\begin{tabular}`` for every table by default, and ``tabular`` cannot break across
pages --- an over-long one is typeset as a single box that runs off the bottom and is
clipped. The LaTeX log said so exactly:

.. list-table:: Table Q. Vertical overflow before the fix
   :class: longtable
   :header-rows: 1
   :widths: 40 30 30

   * - Table
     - Overfull \\vbox
     - What that means
   * - b16-extra Table B (BEST Names)
     - **4184 pt too high**
     - about six pages of rows crammed into one page box, and clipped
   * - b16-extra Table C (alternatives)
     - 1369 pt
     - about two pages lost
   * - b16-extra Table B2 (comments)
     - 948 pt
     - about a page and a half lost
   * - b16-extra Table B3 (second round)
     - 594 pt
     - about a page lost
   * - b16 OOv3 (one table)
     - 363 pt
     - about half a page lost

**Fix.** ``:class: longtable`` on every table whose source runs past ~28 lines --- seven
in b16-extra, six in b16 OOv3. Sphinx then emits ``\begin{longtable}``, which breaks
across pages and repeats the header row with a "continues on next page" marker.
**Vertical overflow is now 0 in b16-extra and 1 (of 2 pt) in b16 OOv3.** Column widths
of Table B and Table 0 were retuned afterwards, since the arrow names are wider than
the Greek they replaced.

This one is worth remembering beyond b16: **any Sphinx table longer than a page silently
loses content in the PDF unless it carries** ``:class: longtable``. Nothing warns except
an Overfull \\vbox line buried in the LaTeX log, and the HTML build looks perfect.


The title page
============================================================================

``conf.py`` sets ``latex_elements["maketitle"] = ""`` --- Template B papers are expected
to supply their own cover in a raw-LaTeX block, and b16-extra had none, so the PDF
began with a bare heading. Added a cover modelled on b16 OOv3's: title and subtitle,
author with the same footnote chain, a "What this document is" abstract drawn from
section 1, the Declarations block, per-paper running heads, and a table of contents
(also suppressed globally, also expected per-paper).

The provenance block that used to sit under the title moved to **Appendix P**, at the
back, as a five-column table: designation, variant, VVN, nomenclature, companion code,
audit status, licence. A one-line MockupModel warning stays at the top, because "not
yet reviewed by anyone" is a reader warning rather than bookkeeping.


The Monte Carlo
============================================================================

**Yes, it is in the package** --- ``code/crosschecks.py``, instrument 2. **Yes, it is
short enough to print**: the world-generator is eight lines, and it is now printed in
full in section 8.3, seeded so that the numbers it prints are exactly the ones the
paper quotes. Ran the printed snippet standalone to confirm: mean 30.345 against the
paper's 30.345, P(onset |leq| 1 yr) 0.0290 against 0.0290.

**It produced no figure, and still does not.** A Monte-Carlo-versus-exact plot would be
two indistinguishable curves --- which is the *result*, but a poor picture of it. The
new figure is drawn from the exact law instead, and the simulation stays where it is
useful: as a number that either matches or does not.


The composite figure
============================================================================

``code/make_figure_cdf.py`` --- the only file in ``code/`` that needs anything beyond
the standard library, kept separate so the audit stays installation-free. It imports
``riskymad_exact`` directly, so the figure and the tables cannot drift apart.

**Design.** Three linear segments on one shared probability axis: 0--10 yr, 10--140 yr,
140--480 yr, with break slashes on both facing edges of every join. The segment edges
were chosen so that no median and no 99th percentile falls on a break. Colours are
slots 1--3 of the validated categorical palette; identity is carried by dash pattern and
direct label as well as hue, and the numbers appear as a table too, which is what the
relief rule asks for when a slot sits below 3:1 on white.

**What it shows.** In the first decade the three worlds differ by less than the argument
between them suggests (8.3 / 2.9 / 0.9 % in year one). The medians are 7, 21 and 70
years. The 99th percentiles are 47, 139 and 462 years. **All three curves reach the
top** --- which is section 11 in a picture: rates set the schedule, not the outcome.

**Raw numbers** are written to ``code/figure-cdf-three-scenarios-numbers.txt``: summary
statistics, the CDF at eleven horizons, the survival function, and the forty-run sample
maxima with the exact tail probability at each.

Six rendering passes were needed; the first five had label collisions (a 99 % annotation
running through the optimistic curve, a percentile label clipped at a panel edge, the
far-tail block straddling the 50 % rule). Each was found by rendering the figure and
looking at it, not by reasoning about it.


The four small things
============================================================================

**4. BftB references --- removed.** They named outreach material as if it were a
deliverable of this paper. Removed from ``00-transform-spec_2026m09d08.txt`` with a
dated amendment note saying why. The 2026m09d07 llog also mentions it and was **not**
touched: llogs are append-only.

**3. The q collision --- what each q stood for, and the fix.**

.. list-table:: Table R. Two unrelated quantities, one letter
   :class: longtable
   :header-rows: 1
   :widths: 26 30 44

   * - Where
     - What it meant
     - Now called
   * - ``quantile(q, ...)``
     - a **quantile level** --- 0.5 for the median, 0.99 for the 99th percentile.
       Dimensionless, and nothing to do with nuclear winter.
     - ``level``
   * - ``car_crash_multiple(..., q=...)``
     - the **death fraction** --- the share of humanity that dies once winter begins.
       This is the paper's :math:`q_{\text{dead}}`.
     - ``q_dead``

Both renamed, both docstrings now say explicitly that the other one exists. 52 of 52
still HELD.

**2 + 1. The density.** Adopted :math:`p_{\text{winter}}(t)`, replacing the mechanical
:math:`p_{T_{R \rightarrow D}}(t)`. Added to Table B, so the "exhaustive" claim holds.

On the capital-P question, which is a real one: **lower case, and not merely by
convention.** Two lines away the same equations use :math:`P(T_{R \rightarrow D} \leq
t)` and :math:`P(T_{R \rightarrow D} > t)` for probabilities. A density is not a
probability --- it has units of 1/yr, and only its *area* over a stretch of years is a
probability. The case is doing real work here: it is what distinguishes the two types on
sight. Capitalising it would put a 1/yr quantity in the notation slot reserved for
dimensionless ones.

Named for the event rather than the arrow because a nested arrow subscript is unreadable
at body-text size, and because *accidental nuclear winter* is what the paper is about.
``winter`` over ``nukewinter``: the paper says "nuclear winter" in full everywhere, and
a contraction that appears in one symbol and nowhere in the prose is a small new thing to
memorise for no gain.


Testing after prompt 3
============================================================================

- ``reproduce_tables.py``: **52 of 52 HELD, 0 BREACH** (after the q rename)
- ``crosschecks.py``: four instruments agree
- the section 8.3 snippet, run standalone: reproduces 30.345 and 0.0290 exactly
- ``rstcheck``, ``check-bib``, ``check-paths``: clean
- b16-extra PDF: **0 vertical overflows** (was 4, worst 4184 pt); worst horizontal
  14.5 pt across 7 minor table cells; 60 pages
- b16 OOv3 PDF: vertical overflows 3 |rarr| 1, and the survivor is 2 pt


EDEN assessment for prompt 3
============================================================================

**Knife Edge #2 --- the clipped tables were invisible from every direction except the
LaTeX log.** The HTML build renders them perfectly. ``rstcheck`` passes. The PDF *opens*
and looks like a normal document. Only a reader who reached the middle of Table B and
found rows missing --- or someone who grepped the log for ``Overfull \vbox`` --- would
know. LLoL caught it by reading the PDF. That is the failure mode the whole HUMANE rule
is about: the artifact looked finished, and the checks that were run all said so.
**Recorded as a standing check: after any PDF build, grep the LaTeX log for**
``Overfull \vbox``.

**Green Meadow #1 (count = 3) --- the broken-axis design.** Three ways to show a
distribution spanning 0.4 to 480 years on one picture: (1) a log time axis --- honest,
compact, and unreadable for the near-term numbers people actually quote; (2) three
panels at three scales, which is what b16 Figure 3 already does, and which makes
comparison between scenarios hard because each panel has its own axis; (3) one broken
axis with three linear segments and a shared probability axis. Chose (3), because the
comparison *between* scenarios is the point and only (3) puts all three on one vertical
scale. The cost is that a broken axis can mislead if the breaks are not obvious, which is
why they are marked on both facing edges of every join and named in the caption.

**BABL Danger: none in the figure**, but one thing was deliberately not done. A figure
that overlaid the 400,000-run Monte Carlo on the exact curve would look impressive and
would show nothing: the two agree to three digits, so the picture is one curve. Drawing
it would have manufactured the *appearance* of independent confirmation while conveying
none. The agreement is reported as numbers in Table E, where it can be checked.


Summary of prompt 3
============================================================================

Committed the transform (rst and code, not the PDFs). Confirmed sections 6.5 and 8.2
read well in print --- LLoL's assessment holds. Fixed the clipped tables, which were
losing about ten pages of content across the two papers. Gave b16-extra a proper cover
page and a table of contents, and moved provenance to Appendix P. Printed the
Monte-Carlo simulator in full in section 8.3 and checked that it reproduces its own
quoted numbers. Built the composite broken-axis CDF figure with its generator and a
plain-text table of every number in it. Removed the BftB references, resolved the ``q``
collision, and adopted :math:`p_{\text{winter}}(t)` for the density.

.. epigraph::

   Offered not to be believed, but to be checked.
