LLog — Matheo-b16-extra: six layouts of the BEST Names table, measured#
Note
LLog header
b16-extra
spin-off — Table B, the BEST Names table.claude/effort-level; reported at session start, not
separately confirmed before the work prompt).claude/mode; reported at session start, not separately
confirmed)b16-bestnames-table-layout-variants-llog-dv_ClaOp50Max_MMv1r0p0_2026m09d16_23h20source/matheology/hell/mm/b/16/extra/b16-extra-bestnames-layout-variants_2026m09d16.rst,
scripts/gen-bestnames-variants.pysource/matheology/hell/mm/b/16/aa-b16-finalizing.rst (one task row)b16-extra-waiting-time-derivation_mmv1_2026m09d07.rst) — read onlyb16-revision-for-expert-reviewrstcheck clean on both new files and on the AA file;
check-paths clean; PDF (37 pp) and HTML built and looked at. No commits
made — LLoL commits.Continuity
Follows the figure-variant session of 2026m09d10 (LLog — Matheo-b16-extra: one model line, two voices, four figure builds), which established the pattern this session reuses: build the alternatives, render them, look at the rendered output, and let LLoL choose. The standing b16 revision context holds: two-part paper (jargon-free general part + expert SIAs), every revision through EDEN, and Claude’s standing assignment is to surface the profound traps rather than the cosmetic ones.
Prompt 1#
You are helping to finish the Matheo-b16 study to get it up to peer-review-quality and to make it ready for both a generally readable first part and an expert-in-depth readable part with all the technical details in respective appendices. There is a b16-extra study that contains what would be an extra supplement with long technical details (such as line-by-line derivations). The b16 extra text was recently rewritten by another agent. It contains a number of tables that are very long and while they should be "readable" by now, they don't look particularlly elegant or efficient in the way they use the space on a page for representing all the relevant BEST Names information for any given variable. Can you think of a more efficient representation? Maybe something using the dictionary or glossary features for defining terms or some other way of organizing a table ? This may merit a bit of experimentation, because BEST Names tables will likely be a recurring problem in how to best layout them, so let's experiment a bit before making a final decision. What I'm concerned about is both: the html representation AND the PDF layout for printing (what serious scientists reviewing the paper will be more likely to do). So, can you create 3 or so other profoundly different layouts of the BEST Names table in b16 extra, so I can choose from the options to see what fits best?
Prompt 2 (mid-turn)#
And open the respective PDF
Prompt 3 (mid-turn, superseding prompt 2)#
I don't care about the PDF as is; please do your layouting first, THEN open the PDF with the various table improvements suggestions so I can compare them
Prompt 4 (mid-turn)#
Rebuild PDF leads to crashes of preview
Response 1 — what was done, in order#
1. Measuring before designing#
The complaint (“not particularly elegant or efficient”) was turned into numbers before
any layout was drawn, because a layout argument settled by taste is a layout argument
that will be re-had. Table B is the list-table at lines 316–566 of
b16-extra-waiting-time-derivation_mmv1_2026m09d07.rst: 16 entries, five columns, at
widths 14 17 27 29 13.
Measured |
Value |
Consequence |
|---|---|---|
Characters in B, E, was |
9 % |
three columns holding 44 % of the width |
Characters in S, T |
91 % |
two columns squeezed into 56 % |
Longest / shortest S cell |
1161 / 89 chars |
13-fold range; no width serves both |
Whitespace share of table area |
63 % |
row height is set by its tallest cell |
Printed height (read off the PDF) |
9 A4 pages |
worse than the 6.1 predicted from characters |
E cells carrying a real code name |
3 of 16 |
a 17 %-wide column, 13/16 empty |
Rows stating |
6 of 16 |
the Explicit names are in the wrong column |
Rows repeating “Was X before 2026m09d08” |
12 of 16 |
the was column already says it |
Rows restating the Michaelis–Menten mapping |
4 of 16 |
Table F already tabulates it |
The 9-page figure was wrong at first and was corrected by looking. The character
count predicted 6.1 pages. The rendered PDF showed 9, and page 3 of the baseline shows
why: longtable pushes a row that will not fit in the space remaining whole to the
next page, so one entry took an entire page with 60 % of it blank. That page-level waste
is invisible to a character count and is the larger half of the problem.
The finding that is not about space
The Explicit names are sitting in the Technical column while the Explicit column
says “— (derived)”. p_M_to_D, T_R_to_D, r_onset, r_relax,
excursions() and r_all are real identifiers in the companion code, and every
one is currently reached only by reading a paragraph of prose in the narrowest text
column of the table. The E of BEST — the whole point of having an E — is
filled in 3 of 16 rows.
This is the profound trap rather than the cosmetic one, and it is the reason the layout question turned out to be worth the session. A prettier five-column table would have hidden it: the defect is legible only once the columns are measured against what they carry.
2. What was built#
Six layouts of the same 16 entries, at
BEST Names: six layouts of one table, for choosing between, generated by
scripts/gen-bestnames-variants.py so that every word of prose is copied verbatim
from the source cells and the six differ only in layout. Nothing was re-derived and
nothing was checked for correctness — that is a separate run, per the standing rule
that a port and a correctness recheck are two different jobs.
What it does |
Pages |
The trade |
|
|---|---|---|---|
V0 |
the present five-column table, unchanged |
9 |
baseline |
V1 |
entries only, no table; B/E/S/T as bold run-in labels |
4 |
full width for 91 % of the characters; nothing can be scanned |
V2 |
a one-page index table (grid, spanning group headers) plus V1 entries |
6 |
scanning and reading both served; two lookups |
V3 |
one table still: narrow data row + full-width spanning prose rows per symbol |
4 |
most compact in print; fails silently when misaligned |
V4 |
V2’s containers plus three content decisions |
6 |
largest saving and a content fix; needs approval |
V5 |
a Sphinx |
4 |
|
A seventh idea, the fold (each T block inside a .. dropdown::), is a
modifier rather than a layout: collapsed in the browser, printed in full in the PDF,
and switchable on for V2, V4 or V5 alike. Shown once inside V2 rather than counted
separately, so the count of real choices stays honest.
3. What rendering exposed that reading the source did not#
Every one of these was found by building the PDF and looking at it, not by reasoning about the markup. They are recorded in the script’s docstring so they are not re-learned.
A misaligned grid table is dropped by docutils SILENTLY. No warning, no error — the table is simply absent from the output. The first probe lost a whole table this way and it was noticed only because a rendered page was blank.
A spanning row’s bottom border must keep its column corners (
+---+---+, not+-------+). With a plain dashed border the next row is parsed as spanning too, which emits raw|into the.texand kills lualatex withMissing } inserted. This broke one build outright.A nested directive inside a grid cell must be re-wrapped to the cell width or it becomes literal text. The
.. warning::in the \(p_{M \rightarrow D}\) cell was flattened into the prose on the first pass, which would have been a strawman of V3 — EDEN requires steelmanning the option one is about to argue against, so it was fixed and V3 re-rendered before being judged.RST field lists are the wrong container for print. They looked ideal (a one-letter label column) and render in LaTeX with the label on its own line and the body on the next, wasting a line per field. Tested in a throwaway probe and abandoned before any variant was built on them.
sphinx-design dropdowns DO print. They emit
\subsubsection*plus the content, so the fold loses nothing in the PDF. This is what makes the fold viable.
4. Where the numbers were corrected mid-session#
Two claims made early were wrong and were corrected against the source rather than carried forward:
“9 of 16 rows have a code identifier buried in T” — that was a count of rows containing any
literal, which swept incrosschecks.pyand the naming remarkwinter. The count of rows stating an actualCompanion code:identifier is 6. The first automated promotion accordingly movedtotalandwinterinto E, which would have been wrong; it now takes only names introduced byCompanion code:, withr_allpreferred over the localtotal.Seven rows keep “— (derived)” honestly and were left alone: the paper itself says of \(T_{M \rightarrow D}\) that it is “not a separate identifier in the companion code” and of \(r_{M \rightarrow \text{out}}\) that “it has no identifier of its own”. Filling those cells to make a column look full would have been the BABL move.
5. Preview crashing (prompt 4)#
Checked rather than guessed. All three built PDFs are structurally sound — valid
header, valid %%EOF, 37 pages, and all 37 rasterise. The crash report
(Preview-2026-09-16-233816.ips) shows EXC_BAD_ACCESS in
-[NSView removeFromSuperview] on the main thread: a view-teardown crash, the
signature of Preview reloading a document whose file was replaced underneath it — not
a malformed PDF. The build at 23h38 fell inside a window that was open.
Mitigation, not a fix: make pdf writes a new timestamped file each run, so any
already-open timestamped copy is never touched; what does get overwritten in place is
build/latex/<name>.pdf. A cairo-rewritten copy (..._flat.pdf) was produced as a
fallback in case Preview still objects to the LuaTeX output, though nothing in the
evidence suggests it will.
EDEN classification#
Green Meadow #1 — the layout question itself. guess = 12 workable layouts; six built. Many arrangements keep every word and lose nothing: the six here, plus landscape index pages, two-column entry setting, per-symbol section headings that enter the TOC, margin glosses, a standalone wide HTML table per the wide-table AHA Tier B, and combinations of the fold with any of them. That the meadow is green is itself the finding: nothing about the content forces the present cramped table. Three diverse examples, as the default asks: V1 (containers), V3 (transposition), V5 (machinery).
Knife Edge #1 — the E column. Here there is only one path that stays in ZION. The BEST scheme’s claim is that each name does a distinct job; a table whose E column is filled in 3 of 16 rows while six E names sit in the T prose falsifies that claim in its own reference table. A reviewer who checks the scheme against the table finds the scheme not followed. Prettifying the table without moving those six names would leave the defect in place and make it less visible — the silent-non-compliance pattern CLAUDE.md names as the most dangerous, because form would look right while substance had drifted. The only ZION-consistent move is to fix the column, whatever layout wins. That is why it is recorded as a task in its own right rather than folded into “choose V4”.
Grey Edge #1 — the six tier names. “Put in / comes out / local proof devices” follows the paper’s own distinction (“the notation itself says which quantities to put in and which ones come out”), but the paper never states these six group names, and a grouping is an interpretation that a reader will take as the author’s. It may be a genuine aid or it may be Claude’s taxonomy quietly acquiring authority — it is not possible to tell from inside the layout question. Marked as Claude’s on the page, droppable without breaking any layout, and left to LLoL.
BABL Danger check on Claude’s own recommendation. The recommendation is V4, which is also the variant that changes the paper — the variant with the largest scope. That is exactly the shape an over-Reach takes, so it was tested: the three content decisions are listed separately, only two are applied in the demo, decision 3 is deliberately left unapplied, and V2 is named as the answer if all three are judged to over-reach. The scope increase is offered for refusal in parts, not bundled. Not flagged as BABL Danger, but recorded so LLoL can overrule the judgment rather than the packaging.
A second BABL check, on the recommendation against V3. V3 is the most compact in print and it is the one that keeps the word “table”. The case against it is not that it looks worse — it looks good, and the llog says so — but that it fails silently when it breaks, twice during this session. Recording that V3 is attractive matters, because a recommendation that only lists an option’s faults is an echo chamber with extra steps.
Summary and recommendation#
The measured problem. Table B prints 9 A4 pages, 63 % whitespace. Columns S and T carry 91 % of the characters in 56 % of the width; columns B, E and was carry 9 % in 44 %. One entry takes a whole page.
The finding that outranks the layout. 6 of 16 rows state a companion-code identifier inside the T prose while their E cell reads “— (derived)”; the E column carries a real code name in 3 of 16 rows. Whatever layout is chosen, that wants fixing, and no layout fixes it by itself.
Where to look. BEST Names: six layouts of one table, for choosing between — in the PDF first,
because print is what decides; the browser afterwards, because that is where V5’s
tooltips would pay. Regenerate with python3 scripts/gen-bestnames-variants.py.
Claude’s recommendation, offered not to be believed but to be checked.
Avoid V3 — most compact and still a table, but only a script can edit it and it fails silently when it breaks. A nomenclature table that can vanish from the PDF without a warning is a bad trade at any page count.
Take V4 for the paper, with V5’s glossary machinery underneath it and the fold on for the website, off for print: 9 pages become about 5, the E column goes from 3/16 to 9/16 filled, twelve repetitions of the rename collapse into one small table that becomes deletable when the rename stops being news, and an HTML reader can hover a symbol instead of flipping back. If the three content decisions are judged to over-reach, take V2 — identical containers, no content change, available today. V1 is right if a reviewer says an index of self-explaining arrow symbols is redundant, which is a fair thing to say about a scheme designed so the symbol tells you what it means.
Not done, deliberately. The paper is untouched. No commits. The three content decisions are LLoL’s, entry by entry, and are recorded as a task in AA b16 — Finalizing the RiskyMAD paper (list of record, lives beside the drafts it plans) so they survive this session either way.
Not checked. V5’s tooltip claim needs a full make html with tippy enabled
(make dev strips the extension); it is stated on the page as expected, not checked.
Prompt 5 — the choice, and the transform#
OK, thanks. This clarifies a lot. I think your recommendation is the way to go and to refine, albeit in a slightly different way than the V4 + V5 you propose. First, creating an easily scannable 1-page overview of all symbols is good. Please define an explicit code symbol for all entries, if only for reference. Then fill the Summarizing line (1 max 2 lines) with as much USEFUL detail to minimize the need for looking up the longer table with details. That longer Table (or should this rather be a glossary?) should then contain all technical and summarizing detail that explain everything - albeit except the following two aspects which should go in extra tables. - Another Names table should map to the older symbols to externalize all "old paper tracking info (before date x)", such that dropping that table can easily be done once all the symbol transformation have been done. (or maybe keep it as some arcane appendix to keep the link to older papers instead of banning it to the deeper repository data). --- Then ALL THE Michaelis menten mapping info with explanations should be in an extra table that will eventually go into the respectie michaelis menten section too (inclluding all explanations). --- Please resetructure the tables accordingly (and create whatever LLog entry is needed for recording the little experiment above) and the table transform. Then make a list of what changes in Paper b16-extra are needed and which you propose for the b16 main text/SIA extras)
Response 2 — the transform, as applied#
1. What section 3 is now#
One five-column table of 16 entries became four objects, each answering one question:
§ |
What it is |
Pages |
The question it answers |
|---|---|---|---|
3.1 |
Table B, the index — B | E | S, one to two lines per symbol |
2 |
“What is this symbol?” — answered without turning a page |
3.2 |
the glossary — every symbol in full |
4 |
“Why is it called that, and what must I not confuse it with?” |
3.3 |
Table B-old — the pre-2026m09d08 symbol map |
2 |
“The draft I reviewed said \(\lambda\). What is that now?” |
3.4 |
Table B-MM — the enzyme-kinetics mapping, staged for section 9 |
1 |
“What is this in enzymology?” |
The former 3.2 / 3.2b / 3.3 (the naming-review record) renumbered to 3.5 / 3.6 / 3.7;
the one in-text pointer to “section 3.2” was retargeted to 3.5. The paper’s own label
b16x-names-table stays on the index, so the reference from Appendix P still resolves.
2. An Explicit name for every quantity — and what that exposed#
LLoL asked for an explicit code symbol on all entries, “if only for reference”. Supplying them meant reading the companion code rather than the table, and the code turned out to know more than the table recorded.
Count |
Status |
Which, and what it means |
|---|---|---|
3 |
already in the table |
|
6 |
in the table’s T prose, now in E |
|
3 |
in the code but nowhere in the table |
|
4 |
proposed — no identifier exists |
|
The second finding, which only appeared on obeying the instruction
Three quantities had code identifiers all along that the names table did not
record. \(q_{\text{dead}}\) is DEATH_FRACTION_Q, a module constant, while
the table called it “— (external)” — externally sourced, yes, but present in the
code. \(\Delta\) is disc, a local in decay_rates(). The density is
evaluated by pdf(). All three were reachable only by reading
riskymad_exact.py.
The first session’s finding was that the table put E names in the T column. This one is sharper: for three entries the table did not know the name existed. A names table that under-reports its own companion code is a names table a reader cannot trust to be complete — and completeness is the property section 3.1 explicitly claims (”The table below is exhaustive”).
The naming convention was read off the code rather than invented: camelCase for
the three model parameters (what you set), snake_case for everything computed
(p_M_to_D, T_R_to_D, r_onset), SCREAMING_CASE for the module constant.
The four proposed names follow the existing <type>_<from>_to_<to> pattern exactly, so
they read as part of the same scheme rather than as additions to it. Each is marked
(proposed) in its glossary entry so that no reader is told an identifier exists when it
does not — which was the one way this instruction could have gone wrong.
3. Glossary, not a table — and why LLoL’s instruction is what made it possible#
LLoL asked whether the long table “should rather be a glossary”. Yes, and the reason is LLoL’s own first instruction. The objection to a glossary in the first session was that a Sphinx glossary term must be plain text, so the natural key — the math symbol — cannot be used, and only nine of sixteen entries had a code name to key on. Requiring an Explicit name for every entry removes that objection entirely: all sixteen now key uniformly on their code name. The two instructions fit together in a way neither did alone.
What it buys: every entry is a :term: target, so any later section of this paper — and
b16 itself, and any other paper in the series — can write :term:`r_onset` and link
straight to the definition; on the website sphinx-tippy shows it as a hover tooltip.
In print it sets as the same definition list it would have been anyway, so the machinery
is free. 17 terms are registered (16 quantities; the two clocks contribute one each).
4. What was checked, and what broke while checking#
Content conservation — HELD. Of 456 distinct words of five or more letters in the old Table B, exactly one is absent from the new file: cross-domain, which occurred only in the deleted column header. Sentence-level: 65 of 95 present verbatim, 12 absent because they are the twelve rows of Table B-old, and 18 apparent losses that are artefacts of the checker joining cells across row boundaries — every clause of all 18 was located individually. Word-frequency drops are exactly the intended de-duplication: drafts 12 → 1, Companion 6 → 3.
Figures — HELD. reproduce_tables.py: 52 of 52 published figures HELD, 0
BREACH. Every number written into the new one-line Summarizing column was checked
against riskymad_exact.py rather than copied from the prose: 0.1 / 6 / 3 per year,
\(r_{M \rightarrow \text{out}}\) = 9/yr (40.6 d), \(p_{M \rightarrow D}\) = 1/3,
\(T_{R \rightarrow D}\) mean 30.33 median 21.1, \(r_{\text{onset}}\) 0.0331,
\(r_{\text{relax}}\) 9.067 (40.3 d), \(r_{\text{flux}}\) 0.0330,
\(r_{\text{all}}\) 9.1, \(n_{MAD}\) 3, \(q_{\text{dead}}\) 0.3.
Four defects found by rendering, not by linting:
DEATH_FRACTION_Qhyphenated across two lines, andrMADescapeslost its final letter to an overfull box, in columns one notch too narrow. Both fixed by rebalancing (index 11/25/64; Table B-MM 13/17/21/10/39). A silently clipped identifier in a names table is the worst possible defect in the worst possible place.Table B-old and Table B-MM were pushed whole to the next page, wasting half a page — the same
longtablefault this work was called in to fix. Both now carry:class: longtable.The two clocks were emitted as one glossary term containing literal backticks, which printed as
C_M_to_R, ``\ ``C_M_to_D. Now two terms sharing one definition.An alarm was raised that Table B-old had been silently dropped. It had not — it was on the following page. Recorded because the first session’s genuine silent-drop made that the expected explanation, and the expected explanation was the wrong one.
5. A collision the transform itself caused#
Publishing the glossary immediately broke the frozen experiment page: its V5 demonstration registered the same sixteen terms, and glossary terms are unique site-wide. Sphinx reported duplicate term description for every one.
Resolved by converting the demonstration to a plain definition list, which renders
identically in both HTML and PDF and registers nothing — so the visual record of V5
survives intact while the paper keeps the :term: targets. That the demonstration had
to be defused the moment the real one shipped is the strongest available evidence that the
machinery works, and it is recorded in the note on that page rather than only here.
scripts/gen-bestnames-variants.py now refuses to run rather than regenerate the frozen
page against the restructured source.
EDEN classification — second pass#
Knife Edge #2 — “an explicit code symbol for all entries”. There is one path that stays in ZION and it is narrow. Supplying sixteen names makes the table complete and makes the glossary possible; supplying them without marking which are real would have the names table assert that sixteen identifiers exist when twelve do. That is precisely the silent-non-compliance pattern: the form (a full column) would look right while the substance (what the code contains) had drifted. The instruction is obeyed in full and each proposed name carries (proposed) plus what the code does instead. Recorded as a Knife Edge rather than a Green Meadow because the attractive-looking alternative — a tidy column with no status marks — is the trap.
Green Meadow #2 — where Table B-old lives. guess = 4. LLoL left this open (“or maybe keep it as some arcane appendix”). All four options stay in ZION: in place as 3.3 (chosen), moved to an appendix beside Appendix P, moved to the llog, or deleted once migration finishes. Chosen 3.3, in place, on the ground LLoL himself gave: a referee holding a pre-2026m09d08 printout needs this map in the paper, not in a commit history. The section is written so that cutting it is one edit that changes nothing else — which keeps all four options open rather than closing three of them.
Grey Edge #2 — where Table B-MM lives. LLoL said “an extra table that will eventually go into the respective Michaelis–Menten section”. Built as 3.4 and staged, with a note in section 9 saying Table F is superseded and how to complete the move in one edit. The grey is real and is stated rather than hidden: for now the paper carries two overlapping enzymology tables, which is a cost. Doing the merge unasked would have pre-empted a decision LLoL reserved; leaving no note would have let the duplication settle in silently. Neither is clean; the staging note is the least-bad of the three, and it is LLoL’s call whether to complete the move now.
BABL Danger check — the condensed Summarizing lines. These are the one place where new prose was written rather than moved, and compression is where meaning is lost. Two guards: every numeral was checked against the companion code rather than against the prose it was condensed from, and no warning was compressed — the “this is not anybody’s personal risk” admonition moved into the glossary entry at full page width rather than being squeezed into two lines. The two-line budget was enforced by measurement (124 rendered characters against 126 available at 64 % of the text block), not by eye. Not flagged as BABL Danger. The residual risk is real and named: a reader who reads only the index now gets a genuinely useful answer and may stop there, which is the stated goal and also the reason the index must never carry a caveat that the glossary qualifies.
The change lists LLoL asked for#
A. Changes now NEEDED in b16-extra (consequences of the transform)#
k |
s |
What |
Why, and status |
|---|---|---|---|
k5 |
s7 |
Finish the Table B-MM move into section 9, or decide to leave it staged. |
The only place the paper now says something twice. Table B-MM (3.4) is a superset of Table F (§9). A note above Table F says it is superseded and how to finish in one edit. Left undone on purpose: LLoL said “eventually”, and which section owns the enzymology is a structural call, not a layout one. |
k3 |
s4 |
Use the new |
Seventeen targets are now registered and nothing links to them yet. Sections 4
to 16 refer to symbols in prose dozens of times; each could be |
k3 |
s3 |
Re-read sections 4–16 for prose that the transform stranded. |
Section 3 used to be where a reader met each symbol’s full story; some later sections may repeat or contradict what the glossary now states once. Not checked — this run touched section 3 and section 9’s note, nothing else. |
k2 |
s2 |
Decide whether the four proposed E names should become real code. |
|
B. Changes PROPOSED for b16 main and the SIAs (LLoL’s call, none applied)#
k |
s |
What |
Why, and the evidence |
|---|---|---|---|
k5 |
s7 |
Reconcile the four Summarizing names that disagree between b16 and b16-extra. |
Measured, not guessed: 4 of Table 0’s 10 differ. \(r_{M \rightarrow D}\) “the escalation rate” / “the kill escalation rate”; \(p_{M \rightarrow D}\) “the per-crisis death probability” / “the per-crisis chance of nuclear winter”; \(T_{R \rightarrow D}\) “the mean waiting time” / “the waiting time”; \(r_{\text{onset}}\) “the onset hazard” / “the onset rate”. Two of the four are substantive, not stylistic. |
k6 |
s8 |
Specifically: \(p_{M \rightarrow D}\) should not be called a “death probability” in b16. |
b16-extra carries a warning saying \(p_{death}\) was retired as a name because readers take “1 in 3” for a personal risk, when the personal figure is two orders of magnitude smaller (0.9 % per year). b16 still calls the same quantity “the per-crisis death probability.” The supplement warns against the name the main paper uses. A referee who reads both will find it, and it is the single sharpest naming defect the diff turned up. |
k4 |
s7 |
\(r_{\text{onset}}\) as “the onset hazard” promotes a T-column synonym into the S slot. |
b16-extra section 7 argues at length that “asymptotic hazard” is one technical reading among several and that the quantity is an equilibrium rate in every sense available to an absorbing chain. “Hazard” in the Summarizing column asserts the narrow reading in the one column meant to be jargon-free — against the paper’s own stated rule that a reader who never looks at an equation loses nothing by staying in Summarizing. |
k4 |
s7 |
Fill Table 0’s Explicit column: 7 of its 10 cells say only “— (derived)”. |
The same fault as b16-extra’s, and now a copy rather than a decision, because
the names exist: |
k3 |
s6 |
Drop Table 0’s “before 2026m09d08” column in favour of a pointer. |
It duplicates Table B-old, which is exhaustive where Table 0’s is partial. Frees the widest column of a five-column table in the main paper, where page budget is tightest — and gives the migration a single home, which was the point of externalising it. |
k3 |
s6 |
Consider giving Table 0 the index layout too. |
Table 0 is 10 rows of the same five-column shape, so it has the same disease in
milder form. The index layout is now built and testable; whether the main paper
also wants a glossary is a separate question, since it can simply |
k2 |
s3 |
SIA-7 (the enzymology appendix) should point at Table B-MM. |
Once the §9 move is decided, SIA-7’s claim that the model is Michaelis–Menten has a single table to cite for the name-by-name mapping instead of restating it. Blocked on the §9 decision above. |
C. Beyond b16#
k |
s |
What |
Why |
|---|---|---|---|
k3 |
s6 |
Decide whether index-plus-glossary becomes the house BEST Names convention. |
LLoL’s framing was that these tables “will likely be a recurring problem”. The
pattern now exists and has been measured on a real paper; if it survives referee
reading it belongs in |
k3 |
s4 |
Amend |
Its Tier C calls the structured-list fallback a “last resort”. For ragged-length documentation content that is the wrong advice, and following it is what produced the nine-page table: when one column’s cells vary 13-fold in length, splitting scanning from reading is the first move, not the last. The AHA is also silent on print, which is where this problem is worst. |
Prompt 6 — “MAD crisis”, never bare “MAD”#
as a general rule for the b16 paper family and the website: Whenever you talk about the RiskyMAD model, talk there ONLY about a "MAD crisis" (singular or plural), and if you want to illustrate (for beginners, or in the introduction on first occurrence, where you spell out MAD for the first time e.g.), say like the 1962 Cuban Missile Crisis. Yet always say MAD crisis instead of only "MAD", which might else be mistaken for "Dead", which in the RiskyMAD model is the result of an overreach in a MAD crisis. - Please remember this and change both the b16 main paper text (incl appendices) and the b16-extra paper accordingly. (Maybe do a check of the rest of the website to ensure that elsewhere this is also used consistently); if there are cases, where you'd say this change shouldn't be done, please let me know. Else do it.
Response 3 — the sweep, and the four classes left alone#
1. The finding that came before any edit#
Both papers already declared this rule. Neither followed it.
b16-extra section 2.1 has carried, since before this session, the sentence: “First, “MAD crisis”, not “MAD”: MAD keeps its usual meaning of Mutually Assured Destruction, the doctrine, which is permanent; the model’s state is a crisis under that doctrine, which is not. This paper therefore always writes “MAD crisis” for the state.“
It then wrote bare MAD for the state 24 times. b16 main wrote it 31 times and did not state the rule at all.
This is the silent-non-compliance pattern CLAUDE.md names as the most dangerous BABL form: the declaration is present, so an auditor reading the rules finds the system correct, while the substance has drifted. It is worse than never having stated the rule, because the statement is what stops anyone checking. LLoL’s instruction arrived independently of this and would have been right with or without it; what the sweep adds is the evidence that stating a convention is not keeping it, and that the gap is invisible from inside the document.
LLoL’s reason is also not the reason the papers gave, and it is the stronger one. The papers argued from the doctrine (MAD is permanent, a crisis is not). LLoL argues from the reader’s eye: a bare MAD standing beside Dead is one glance from being read as the state it leads to, when the entire forecast is the distance between them. Both reasons are now stated, LLoL’s first.
2. What was changed#
Where |
Edits |
Notes |
|---|---|---|
b16 main ( |
31 |
plus the state definition rewritten to spell out Mutually Assured Destruction and name the 1962 Cuban Missile Crisis as the type case, plus a new admonition stating the rule, which the paper did not have |
b16-extra |
25 |
incl. one cell inside a grid table, re-wrapped so the borders stayed aligned; the existing caution was rewritten to carry LLoL’s reason first and the Cuban type case |
13 live site pages |
15 |
|
3. What was NOT changed, and why#
Four classes are exempt as a matter of policy, not of judgment about the wording:
Class |
Count |
Why |
|---|---|---|
LLogs ( |
171 |
append-only audit trails; editing them falsifies the record of what was said when |
Superseded drafts ( |
176 |
supersede, don’t overwrite: these are kept precisely to show what earlier versions said. Rewording them would make the old versions say something they never said, which is the opposite of why they are kept |
Frozen record (the layout-variants page) |
37 |
frozen this session as the record of a decision; a record that gets edited is not a record |
Published floor ( |
71 |
the one that needs LLoL’s decision — see below |
And these senses are exempt as a matter of meaning, wherever they occur:
the doctrine — “MAD → MAP”, “the MAD pathway”, “the MAD world order”, “safety by MAD”, the payoff matrix. MAD there is Mutually Assured Destruction, and writing “MAD crisis” would be wrong, not merely unnecessary.
MADI — Mutually Assured Destruction Inhibitor (b18). A different term that merely starts the same way.
the MAD-is-on / MAD-I-SON wordplay on Madison (
flyingscroll/talk/draft-talk.rst, 29 occurrences). A deliberate pun tied to a venue; the rule would destroy it.code identifiers and math —
rRiskyGoMAD,rMADescapes,rMADtoDEATH,GoMAD,n_MAD, \(\text{MAD}\), and the Evolvix model source blocks (Action 1 ( Risky ---[ Rate = 0.10 ]---> MAD )). Changing these would change the code, which LLoL did not ask for and which would break the companion.one verbatim quoted review comment in b16-extra (~line 1163) that uses “MAD states”. It is somebody’s words in quotation marks.
4. The one case LLoL should decide#
The published floor carries 71 bare MADs — 28 of them in the public b16
source/study/matheo/b16/b16-form-riskymad-mmv5.rst is the public b16, and
b16-intro-riskymad-mmv5.rst its intro. They are MMv5, with committed download
PDFs at /_file/pdf/matheo/mmv5/.
Not changed, on the standing rule that a published version is superseded, never overwritten. Editing the rst alone would put the page out of step with its own PDF; editing both would silently change a version that readers may already hold. Either is the “refresh in place” that the Matheo convention exists to prevent.
So the public pages will keep saying bare “MAD” until a new version is poured. Three ways forward, LLoL’s call: (1) leave it — the floor is MMv5 and MMv5 said MAD, which is honest; (2) fold the rename into the next pour, so it ships as part of a labelled new version; (3) treat it as an erratum and pour a corrected MMv5 with a dated note. (2) is the cheapest and the most consistent with everything else in the series, and it costs nothing now because the pour has to happen anyway for the OOv3 content.
5. Where the rule now lives#
In the papers: stated in b16 main (new admonition, section 3) and in b16-extra (section 2.1, rewritten), each giving both reasons and the Cuban type case.
In Claude’s memory:
feedback_mad_crisis_never_bare_mad, with the full exemption list, so the next session does not re-derive it.Not yet in
CLAUDE.md. It belongs there as a Language Rule 9 — it is the same shape as Rule 8 (Shabbat vs Jubilee), and CLAUDE.md is checked in, so it would bind contributors and other models rather than only this one. Not added unilaterally: CLAUDE.md is a governance file and the addition is LLoL’s to make. Proposed wording is in the session reply.
Checked: rstcheck clean on every edited file; check-paths clean; b16 main
rebuilt to PDF (68 pp) and the new admonition read on page 9 of the rendered output rather
than assumed. No commits made — LLoL commits.
Prompt 7 — are the Explicit names themselves any good?#
DEATH_FRACTION_Q is weird (and a few others are also poorly chosen names; e.g. why not p_disaster instead of p_death; maybe p_nuked is clearer; similarly r_nuked instead of r_onset?, the r_relax sounds rather tecnical termed (instead of) being something related to "warmup" of the system? check all explicit names for poor naming choices and propose the clearest possible names, so all beginners can see as easily and as clearly as possible what these variables are about.
Response 4 — a proposal, not an edit#
1. The diagnosis, against LLoL’s own definition of the dialects#
evx-naming-intro states what each BEST dialect is for:
Brief → the Busy power geek → shaped for Brevity to cut typing. Explicit → the Expert developer → shaped for Easy reading and writing. Summarizing → the Starting student → shaped for Succinct explanation. Technical → the Terminology expert → shaped to Target domain terms.
The finding
The Explicit column is not merely worded badly. It is populated with names borrowed from the other three dialects. Thirteen of the sixteen are a Brief name, a Technical name, or a mixture — sitting in the Explicit slot.
Brief transliterations (6):
p_M_to_D,T_R_to_D,r_M_to_out,T_M_to_D,n_MAD,C_M_to_R/C_M_to_D. These are the Brief symbols typed in ASCII. They serve the busy power geek, duplicate column B exactly, and leave column E carrying no information a reader does not already have.Technical terms (4):
r_onset,r_relax,r_flux,disc. Onset, relaxation, flux and discriminant are domain terms. They belong in column T, which is where the table already explains them.Malformed (1):
DEATH_FRACTION_Qis three dialects at once — an English phrase, PythonSCREAMING_CASE, and a leftover Brief-symbol letterQ— and is clear in none of them.Readable phrases (3):
rRiskyGoMAD,rMADescapes,rMADtoDEATH. These are the only three doing the Explicit job. The repair is to make the other thirteen look like these three — but see section 2, because two of the three carry defects of their own.
A note on audience, since LLoL asked for beginners: in this scheme the starting student is served by S, and S was rewritten last session to one or two lines carrying the numbers. Clearer Explicit names help everyone and are worth having, but the beginner’s column is already doing its job; what is broken is the developer’s.
2. Two Explicit names that are not just opaque but wrong#
rMADtoDEATH asserts what the paper denies
Section 2.1: “**Dead* — accidental nuclear winter has begun. The name refers to the irreversible collapse of the civilization that built the weapons,* not to the death of every human.“
The identifier for the arrow into that state is rMADtoDEATH. The prose spends a
sentence denying exactly what the name asserts. And DEATH_FRACTION_Q — the one
quantity that is about human deaths — uses the same word, so the place where
“death” is correct and the place where it is not are spelled identically.
rMADescapes collides with the other escape
rMADescapes is a crisis calming down. rRiskyEscape (b16 SIA-1, line 1331)
is civilization escaping to Mutually Assured Progress — the one good outcome in the
whole model. Two identifiers, one word, opposite scales of meaning. A reader scanning
the code meets “escape” twice and has no way to tell which is which.
3. The proposal — one family, read as English#
Type prefix (r rate, p probability, t time, n count, q fraction,
d density) then CamelCase words, in the style of the three that already work.
Brief |
current E |
why it fails the Explicit job |
proposed E |
|---|---|---|---|
\(r_{R \rightarrow M}\) |
|
“GoMAD” reads as goes insane; and it is the bare MAD just banned from prose |
|
\(r_{M \rightarrow R}\) |
|
collides with |
|
\(r_{M \rightarrow D}\) |
|
says DEATH where the paper says not the death of every human |
|
\(r_{M \rightarrow \text{out}}\) |
|
Brief transliteration |
|
\(p_{M \rightarrow D}\) |
|
Brief transliteration |
|
\(T_{R \rightarrow D}\) |
|
Brief transliteration |
|
\(T_{M \rightarrow D}\) |
|
Brief transliteration |
|
\(r_{\text{onset}}\) |
|
Technical term; says neither per year nor onset of what |
|
\(r_{\text{relax}}\) |
|
Technical term from kinetics; LLoL is right that the warm-up sense is the readable one |
|
\(n_{MAD}\) |
|
Brief transliteration; does not say what is counted or until when |
|
\(q_{\text{dead}}\) |
|
three dialects at once, clear in none |
|
\(r_{\text{flux}}\) |
|
Technical term, and indistinguishable from |
|
\(r_{\text{all}}\) |
|
says nothing at all |
|
\(p_{\text{winter}}(t)\) |
|
it is a density in 1/yr, not a probability; the |
|
\(\Delta\) |
|
abbreviation of a Technical term |
|
\(C_{M \rightarrow R}\), \(C_{M \rightarrow D}\) |
|
Brief transliteration |
|
On LLoL’s own suggestions. p_disaster and p_nuked are both clearer than
p_M_to_D; Winter is proposed over nuked only because being nuked and nuclear
winter are not the same event — an exchange can happen without winter, and the model’s
Dead state is specifically accidental nuclear winter has begun. r_nuked for
r_onset has the same issue, and a second one: r_onset and r_flux are two
different quantities that a single “nuked” root would fuse — one is a hazard, the other
an average over an ensemble of worlds. rWinterPerYear against rWinterPerWorldYear
keeps them apart on the page. The warm-up reading of r_relax is adopted as proposed.
4. What it costs, measured#
Group |
in code |
in rst |
published floor |
verdict |
|---|---|---|---|---|
A. |
0 |
this paper only |
0 |
free — proposed names that have never shipped |
B. the ten internal names ( |
~150 |
papers + llogs |
0 |
cheap — locals and one constant; nothing public carries them |
C. the three model parameters |
397 |
241 |
28 |
expensive — a second public rename, floor included |
Consistency forces the choice. pCrisisToWinter (group B) names the probability of
the arrow whose rate is rMADtoDEATH (group C). Renaming one without the other leaves
the pair disagreeing, which is worse than leaving both. So the real options are two:
Option 1 — the whole family, one migration. All sixteen. A naming migration costs about the same whether it moves six names or sixteen; Table B-old already exists to carry it and would gain a second block; the code change is checkable in one run of
reproduce_tables.py; the floor follows at the next pour, which has to happen anyway. Recommended.Option 2 — defects only.
DEATH_FRACTION_Q,disc, and the six transliterations. Cheaper and safe, but leavesrMADtoDEATHasserting in an identifier what section 2.1 spends a sentence denying, and leavesrMADescapescolliding withrRiskyEscape.
BABL check on this proposal. Renaming sixteen identifiers in a paper heading for expert review is an obvious over-reach candidate, and it was tested as one. Two things keep it on the ZION side: every name is judged against LLoL’s own published definition of what the Explicit dialect is for, not against Claude’s taste; and two of the sixteen are not matters of taste at all but identifiers that contradict the prose beside them. Nothing has been applied. The proposal is offered not to be believed, but to be checked — name by name, and the tiers can be taken separately if the family argument is judged too strong.
Prompt 8 — five checks on the naming proposal#
In your proposed table above: if p_winter(t) │ p_winter │ dWinterPerYear — it's a density in 1/yr; the p miscategorises it, doesn't the Brief column then have to change too (p to d...)? - Don'T these "clocks │ C_M_to_R/D │ clockToCalm, clockToWinter" need separate lines? - I get the sort of collision in "rMADescapes collides with rRiskyEscape" but I think that rRiskyEscape is too weak a name to get to MAP. The actual rate determines on human intelligence and the will to adapt to circumstances in following reality at all times. --- I have some worry about the expensive 3 model parameters, because I used them all over, including in figures. I do like your alternative names though; maybe consider replacing Crisis with MAD (pros and cons, please). How about keeping the 3 widely used ones as synonyms (pros and cons, please)? -- Are there any other names and quantities that ought to be part of this table?
Response 5 — two of the five questions found defects, not preferences#
1. The density: yes, and it exposes a contradiction already in the paper#
The letter p is defined twice, incompatibly
Line 306, the type-letter legend: “Then \(r\) is a rate per year, \(p\) a probability (no units), \(T\) a time in years…”
Line 673, inside the \(p_{\text{winter}}(t)\) entry: “Lower case on purpose: \(P(\cdot)\) in these same equations is a probability, and a density is not one — the case carries the type.”
So the legend says lower-case \(p\) means probability; the entry says lower-case \(p\) means density and upper-case \(P\) means probability. \(p_{M \rightarrow D}\) obeys the legend and breaks the entry; \(p_{\text{winter}}(t)\) obeys the entry and breaks the legend. Both are in the same table.
LLoL is right: the Brief symbol has to change too. Recommended:
\(d_{\text{winter}}(t)\), with d added to the legend as density, per year.
Why a sixth type letter rather than keeping the case convention: the case convention asks
a reader to tell \(p\) from \(P\) at subscript size in a paper already dense with
subscripts. That is the same one-glance failure as bare MAD beside Dead, one layer
down, and it is settled the same way — by making the two things look different rather
than by asking the reader to look harder. It also lets the Explicit name
dWinterPerYear and the Brief symbol agree, which is the point of a names table.
Cost: six occurrences of \(p_{\text{winter}}\) in b16-extra, none on the floor.
2. The two clocks: yes, separate rows#
They are two random variables with two different rates. Every other row in the index holds one quantity; this row holds two, which is why its Brief cell is the widest in the table. Splitting gives each its own one-line Summarizing, and lets the second row carry the punch line:
\(C_{M \rightarrow R}\) —
clockToCalm— the calming clock: the random time until this crisis would de-escalate, if nothing else happened first.\(C_{M \rightarrow D}\) —
clockToWinter— the winter clock: the random time until this crisis would reach Dead. Whichever clock rings first decides.
The glossary entry stays single, with both terms sharing one definition — the explanation is genuinely about the pair racing, and Sphinx glossaries support several terms per entry. Index: two rows. Glossary: one entry, two keys.
3. rRiskyEscape: LLoL is right, and the arrow is missing from the table entirely#
The “exhaustive” table omits the model’s fourth arrow
Section 3.1 states: “The table below is exhaustive. Every symbol that appears
anywhere in this paper is in it…” The Risky → LifeMAP escape appears four
times in b16-extra (lines 223, 656, 856, 1289) and is listed as a transition in b16
main’s SIA-1 with the identifier rRiskyEscape. It has no row.
It is the only arrow that leads anywhere good, and it is the only arrow the names table does not name.
On the name itself: escape is the weak word, and it is also the collision — the same
verb does duty for a crisis calming down (rMADescapes) and for civilization reaching
Mutually Assured Progress. LLoL’s reading is that this rate is driven by human
intelligence and the will to keep adapting to reality. That splits cleanly across the
dialects: the Explicit name says what happens, the Summarizing name carries what drives
it.
Proposed: ``rWeAdaptToMAP``, with rWorldAdaptsToMAP and rAdaptationToMAP as
runners-up. The first is recommended because this is the one arrow with an agent — the
other three happen to the world, this one is chosen by it — and encoding that in the
name is meaning, not decoration. Summarizing line: the adaptation rate — how fast the
world learns to leave Risky for Mutually Assured Progress. Zero so far: it turns on
human intelligence and the will to keep following reality, and nothing has been built.
4. The three model parameters: MAD or Crisis, and synonyms or not#
The root of the problem is that all three incumbents are too short. rRiskyGoMAD
(11 characters) is short because it was trying to be a Brief name. In LLoL’s own scheme
brevity is B’s job; E is shaped for easy reading and writing and is allowed to be
long. Both questions become easier once that constraint is dropped.
|
|
|
|---|---|---|
for |
readable with no key at all; matches the Summarizing column’s own words (“the crisis rate”, “the crisis clock”); keeps the banned bare MAD out of the code layer too |
maps straight onto the Brief subscript M; echoes the model name RiskyMAD; smallest visual change from the incumbents, so figures and slides still look related |
against |
loses the mapping to M; and “crisis” is ambiguous across this site, where
|
it is the bare MAD just banned from prose. Identifiers are exempt, but the Dead-confusion risk does not disappear because the text is monospaced |
Recommended: neither pole, but the phrase LLoL already mandated —
rMADcrisisStarts, rMADcrisisCalms, rMADcrisisToWinter. It contains “MAD
crisis” verbatim, maps to M, cannot be confused with the site’s general “crisis”, and
reads as English. At 16–18 characters it is longer than the incumbents, which is the
point: Explicit names are allowed to be long. The rest of the family follows:
pMADcrisisToWinter, rMADcrisisEnds, nMADcrisesUntilWinter.
for |
against |
|---|---|
It is native to BESTnaming, not a workaround. The published system is explicitly about “nailing all synonyms to 1 NAMESTREE ROOT” — 1 Box, many names. A deprecated synonym pointing at the same box is the scheme working as designed. |
Two live names for one parameter is what a names table exists to prevent. A referee meeting both asks which is canonical, and the table has to answer. |
Zero breakage: every existing figure, slide, llog and floor page stays valid, with no migration event and no re-pour forced by naming alone. |
In Python the parameter names are the function signatures. Supporting both means
|
Table B-old already exists and already does exactly this job for the 2026m09d08 rename. No new mechanism needed. |
Deprecated synonyms become permanent, because the old name is shorter and the fingers know it. And it weakens the audit story: “which name did this figure use?” becomes a lookup rather than a date. |
Recommended split: synonyms in the prose layer, one name in the code. Table B-old
records old → new, exactly as it does for \(\lambda, \mu, \kappa\); the companion
code carries one name per parameter, changed in a single commit and checked by one run
of reproduce_tables.py; figures are regenerated at the next figure release, which has
a VVN and a precedent from 2026m09d10; the published floor keeps the old names, honestly
labelled, until the next pour — the same decision already taken for “MAD crisis”. This
needs no new mechanism and leaves nothing ambiguous in the code.
5. What else belongs in the table — the tier with one row and two members#
“Put in — from outside the model” has one row. The model has two external inputs.
\(q_{\text{dead}}\) is in the table. ROAD_DEATH_PER_PERSON_YEAR = 1.49e-4 —
the global road-death baseline that the entire car-crash comparison divides by — is
not, although it is the same kind of thing: a number taken from outside, not
produced by the model, that the headline result depends on.
Checked against the companion code and against what the paper quotes as numbers. Missing quantities, in rough order of how load-bearing they are:
Quantity |
in the code |
why it belongs |
|---|---|---|
the escape arrow, Risky → LifeMAP |
|
the fourth arrow of the model; see section 3 above |
the road-death baseline |
|
the second external input; the comparison rests on it |
the median waiting time, 21.1 yr |
|
the index quotes it in its own \(T_{R \rightarrow D}\) line while not naming it |
the time-dependent hazard \(h(t)\) |
|
the whole subject of section 7.2 — risk starting at zero and climbing |
\(P(T \leq t)\) and \(P(T > t)\) |
|
the source of the quoted 2.90 % / 3.25 % for the coming year |
the car-crash multiple, 58x / 82x |
|
the paper’s most-quoted comparison |
the naive product, 0.0333/yr |
|
the retired shortcut measured in Table D |
the saturation \(S/K_m\) = 0.011 |
|
section 9’s “ninety times below half-saturation” |
the spread of the wait |
|
quoted as a standard deviation in section 6 |
the shifted-exponential delay |
|
minor; section 8 only |
The cost of completeness, stated plainly. 16 rows becomes about 26 once the fourth arrow, the split clocks and these are added, so the index stops being one page and becomes about one and a half. Two ways to keep the promise without losing the property: accept 1.5 pages, or add a seventh tier — “Reported quantities: computed from the above, quoted in the text” — and let a reader stop at the end of tier six. Recommended: accept the page and a half. The table’s own claim is that it is exhaustive; a table that claims exhaustiveness and omits the one arrow that leads somewhere good is worse than a longer table.
Nothing in this response has been applied. Section 1 and section 3 report defects that exist in the paper today and are worth fixing whatever is decided about naming; sections 2, 4 and 5 are proposals awaiting LLoL.
Prompt 9 — Exodus, three kinds of 1/yr, MADcrisis adopted, and splitting the table#
what about rExodusToMAP with Ex as the brief symbol in the respective notation R->Ex ? -- What is the difference of rates (1/yr), clocks (1/yr) and density (1/yr)? what is the difference between rWinterPerWorldYear and dwinterPerYear and clockToWinter vs rCrisisToWinter? -- Given the pros and cons of Crisis and rMAD, I'd go with MAD here, because it specifies the type of crisis; upon consideration, maybe MADcrisis* is better still, so let's do that. Keep the old Explicit names in the old names table until I have changed the respective figures. -- How about separating the BEST names tables such that one is e.g. Tab.B1 is about all parameters that define the model as input, Tab.B2 define the output computed, ... B3 then offers the parameters for cost calculations etc. Is that easy enough to use or am I thereby selling out the usability by making readers hunt symbols in 3 different tables?
Response 6#
1. rExodusToMAP yes; Ex as a Brief symbol no, and the paper says why#
The Explicit name is a clear improvement. Exodus is established vocabulary here — 108 files use it, including the escapegoat-led Exodus from MAD to MAP — and it carries the will-to-adapt sense that made escape too weak.
The Brief symbol should stay \(r_{R \rightarrow L}\) , and the reason is the paper’s own. Section 3.5 uses precisely this arrow as the decisive argument for adopting the arrow scheme at all:
“b16 already contemplates a fourth transition (Risky → LifeMAP, currently rate zero), and later work will want more states. Under the arrow scheme that transition is automatically \(r_{R \rightarrow L}\) — no decision required, no collision possible. Under the Greek scheme every new state forces a new letter…”
Introducing \(Ex\) would spend exactly the property the paper bought the scheme for.
Three further reasons point the same way: an arrow subscript names states, and Exodus
is the journey while LifeMAP is the destination (the Evolvix source says
Action 4 ( Risky ---[ Rate = 0 ]---> LifeMAP )); \(P\) for MAP or Progress is
already taken by \(P(\cdot)\) for probability; and \(L\) is free, checked.
So: B \(r_{R \rightarrow L}\), E rExodusToMAP, and the Summarizing line
carries what drives it.
A different question hiding inside this one
If Exodus is meant as a genuine transit state — the world under way, having left Risky and not yet arrived at LifeMAP — then that is a four-state model, not a naming choice, and \(Ex\) becomes a correct state letter. That would be a change to the model with its own arrival and departure rates. Worth separating from the naming decision; it is a modelling question.
2. Three quantities in 1/yr — except one of them is not#
Claude’s proposal had a defect, and the question found it
A clock is not 1/yr. It is a time, in years. \(C_{M \rightarrow D}\) is the
random time until this crisis would escalate. It became confusable because the
proposed names clockToCalm / clockToWinter were the only two in the family
with no type prefix — every other name starts with r, p, t, n,
q or d, and these started with a noun. Fixed: tClockToCalm,
tClockToWinter.
So only two kinds share 1/yr, and they differ by what they are conditioned on:
Kind |
Units |
What it is |
|---|---|---|
rate |
1/yr |
an intensity, conditional on still being here: given the world has survived to \(t\), the chance per year of the next thing happening. Does not integrate to 1, and may exceed 1. |
clock |
yr |
a random time: one draw from the exponential distribution that a rate defines. A rate of 3/yr gives a clock with mean 1/3 yr ≈ 122 days. |
density |
1/yr |
unconditional: how much of the total probability falls in each year, counted from now. Integrates to exactly 1 over all time. Only its area is a probability. |
The link between the two 1/yr quantities is one line, and the paper already states half of it: hazard = density ÷ survival, \(h(t) = d_{\text{winter}}(t) / P(T > t)\). The \(p_{\text{winter}}\) entry says it “appears once, as the numerator of the hazard in section 7.2” — that numerator is exactly this.
The three specific comparisons asked for:
\(r_{\text{flux}}\)
rWinterPerWorldYearagainst \(d_{\text{winter}}(t)\)dWinterPerYear. The first is one number, 0.0330/yr: total onsets divided by total world-years lived, which is what running 40 worlds and dividing gives you. The second is a function of \(t\): zero at \(t=0\), rising, peaking, decaying, with area 1. A scalar property of an ensemble against a curve over time — different kinds of object that happen to share units.\(r_{\text{onset}}\) against \(r_{\text{flux}}\). Both scalars, 0.36 % apart, and the difference is conditioning:
rWinterPerYearis a hazard, conditional on having survived so far;rWinterPerWorldYearis an unconditional average over the whole run. The proposed names do not carry that, which this question proves. Better pair:rWinterPerSurvivingYearagainstrWinterPerWorldYear— surviving is the conditioning, world is the ensemble, and the two names now teach the distinction instead of hiding it.tClockToWinteragainstrMADcrisisToWinter. The rate is the parameter you set, 3/yr, an intensity that never varies. The clock is one random draw governed by it, measured in years, different on every run. Parameter against realisation; 1/yr against yr.
3. MADcrisis* adopted — and what the figures actually contain#
Decided by LLoL: rMADcrisisStarts, rMADcrisisCalms, rMADcrisisToWinter,
and with them rMADcrisisEnds, pMADcrisisToWinter, nMADcrisesUntilWinter. The
old Explicit names stay recorded in Table B-old — which gains an
old-E → new-E block beside the existing old-B → new-B one — until LLoL has
changed the figures.
Checked, so the wait is scoped rather than open-ended. In the companion figure script
the three identifiers appear in exactly one place that reaches a reader:
write_table(), which writes …-numbers.txt. That file is regenerated by running
the script, so it costs nothing. The plotting code carries no identifier text in any
label — the model line says “Risky → MAD crisis → Dead”, not the code names.
The figures that do carry them are the ones outside this script: the model-overview
diagram and the posters (ironrod/index.rst describes “the MAD/GoMAD/Dead/Risky
framework”). Those are LLoL’s to redraw, and Table B-old holds the bridge until then.
4. Splitting B1 / B2 / B3: yes, that would sell out the usability — but the split LLoL wants already exists#
The decisive objection
A lookup table has to be searchable by what the reader has, not by what they lack. Someone who meets an unknown symbol on page 20 has the symbol; what they do not have is its category — that is the thing they are looking up. Three tables asks them to classify it first, and to check up to three before finding it. One table asks them to scan one.
But the grouping is already there. The index has six tier blocks — Put in: the three arrows / Put in: from outside the model / Comes out: rates / …probabilities, counts, densities / …times / Local proof devices — which is B1, B2 and the rest, as headed blocks inside one table. LLoL gets the organisation without paying the lookup cost.
And there are already two access paths, deliberately. The index is for browsing by
category; the glossary is for lookup by name, sorted, :term:-linked, with hover
tooltips on the website. A reader with a symbol uses the glossary; a reader wanting to see
what kind of thing exists uses the index tiers. Neither hunts.
One split IS right, and it is by document, not by table. Cost parameters — the stake band \(E\), \(K\), the thresholds of Tables 10 and 11 — live in b16 main, where they are used; b16-extra names the model. A reader always has one document in hand, so a per-document names table costs nothing to navigate. So the “B3 for cost calculations” belongs in b16 main’s Table 0, not as a third table in b16-extra.
Recommendation: one index per document, tier blocks inside it, glossary beside it. Keep B1/B2/B3 as tier headings, which is what they already are.
Prompt 10 — the needle-eyed path, defining hazard, and whether b16-extra should exist#
1. The correct transition is of course what I call a "needle-eyed path" of many doors that need intelligence to walk through them; modeling all of them is impossible; so I have to collapse them to model any of them; I could model the few large stages I identified, but that would be creating an overcomplicated model with many unknown parameters that I cannot properly measure before there isn't a proptotype implementation at least. Thus, I'm contemplating a 1 or 2 stage solution, where the 1 stage would be from RiskyToLife in 1 step and the 2 stage solution go from rRiskyToMADI or rRiskyToExodus and from rMADItoLife or rExodusToLife. --- Exodus is a genuine transit state and the MADI-phase is the priming required to properly start the Exodus transit. - All those are effectively switched OFF if the rates are 0; and to succeed, the rates need to be sufficiently high to compete with the MAD rates. Hence, one way to describe my work is to say that I work on increasing those rates by consciously preparing for the respective transitions (hopefully fast enough to matter in my race against time). - Please choose nomenclature accordingly. --- 2. Please make sure that the respective terms are explained clear enough in the paper and that hazard is defined properly (add to table too?!). ---- 4. That brings me to a broader question. Namely: where should those tables be? When reading some parts of the b16-extra I though that those were so well-explained and clear that I'd want those bits in the main paper. How much is hard to estimate, maybe about half of the material? So, I'm at the moment uncertain about whether b16-extra should really be an extra paper or would best be sub-sumed into the respective appendices of the b16-main paper. Can you argue for and against, steelmanning both? Maybe the best way to define all symbols would be in some early SIA (e.g. the one defining the model), and there add in all the other symbols too. The format would be according to topic (I presume those 3 tables, each followed by a respective glossary, assuming that this doesn't create sphinx tech problems).
Response 7#
1. The escape path — and a correction to Claude’s previous answer#
Claude’s objection to Ex is withdrawn
Last round Claude argued against \(Ex\) as a Brief symbol because “an arrow subscript names states, and Exodus is the journey.” LLoL has now stated that Exodus IS a genuine transit state. That removes the premise, and the objection with it. The remaining argument — that the arrow scheme should absorb new states without renegotiation — now supports \(Ex\) rather than opposing it.
Letters, checked rather than assumed. \(X\) alone is not free: b16-extra
already uses it as the generic random variable in the memorylessness law
\(P(X > s + t \mid X > s) = P(X > t)\) and in the clocks’ note. \(I\) is free but
reads badly next to 1 and l. So both new states take multi-character \text{}
subscripts, for which the paper already has a precedent in
\(r_{M \rightarrow \text{out}}\).
Model |
Brief |
Explicit |
state added |
|---|---|---|---|
1 stage |
\(r_{R \rightarrow L}\) |
|
none |
2 stage, via Exodus |
\(r_{R \rightarrow \text{Ex}}\), \(r_{\text{Ex} \rightarrow L}\) |
|
\(\text{Ex}\) |
2 stage, via MADI |
\(r_{R \rightarrow \text{MADI}}\), \(r_{\text{MADI} \rightarrow L}\) |
|
\(\text{MADI}\) |
3 stage, if ever built |
\(r_{R \rightarrow \text{MADI}}\), \(r_{\text{MADI} \rightarrow \text{Ex}}\), \(r_{\text{Ex} \rightarrow L}\) |
|
both |
existing |
\(r_{R \rightarrow M}\), \(r_{M \rightarrow R}\), \(r_{M \rightarrow D}\) |
|
— |
The naming must let the reader see the race
LLoL’s own framing is that these rates only matter if they compete with the MAD rates, and that the work is raising them. That is an argument about naming: the escape arrows must be the same shape as the MAD arrows, in the same units, so the comparison reads straight off the page rather than needing to be explained:
rMADcrisisStarts 0.1 /yr the race against
rExodusStarts 0 /yr the race for
Two consequences for the table. First, the tier heading “Put in — the three arrows of the model” should become two tiers: “Put in — the arrows that are running” and “Put in — the arrows not yet built (rate 0)”. The names table then states the paper’s central fact as a fact about the model: three arrows running toward Dead, and every arrow toward Life at zero. Second, the Summarizing line for each escape arrow must carry what LLoL said and no paper currently says — that this rate is not fixed by nature. Proposed: “the exodus rate — how fast the world sets out for Mutually Assured Progress. Zero so far, and not a constant of nature: it is what deliberate preparation raises, and it has to outrun the crisis rate to matter.”
2. Four quantities in 1/yr, and a proper definition of hazard#
LLoL is right that these need explaining in the paper, and right that the hazard needs a row. Proposed: a short new subsection, “Four quantities in 1/yr, and how to tell them apart”, carrying this table and the identity below.
Brief |
Explicit |
units |
what it is |
|---|---|---|---|
\(d_{\text{winter}}(t)\) |
|
1/yr |
density, a function of \(t\): how much of the total probability falls in each year. Area over all time = exactly 1. |
\(r_{\text{winter}}(t)\) |
|
1/yr |
hazard, a function of \(t\): given the world is still here at \(t\), the chance per year of onset now. Starts at exactly zero and climbs. |
\(r_{\text{onset}}\) |
|
1/yr |
the value the hazard settles at, 0.0331/yr. The disaster rate, and the number comparable to published “X per cent per year”. |
\(r_{\text{flux}}\) |
|
1/yr |
ensemble average, one number: onsets divided by world-years lived. What 40 runs measure. |
\(P(T \leq t)\) |
|
— |
probability winter has begun by \(t\). Source of the quoted 2.90 % / 3.25 %. |
\(P(T > t)\) |
|
— |
probability it has not. \(= 1 -\) |
The definition of hazard, in one line, which the paper currently never states:
The \(p_{\text{winter}}\) entry already says the density “appears once, as the numerator of the hazard in section 7.2” — that numerator is exactly this, and naming both sides makes section 7.2 readable instead of merely correct.
A better pair than last round’s. rWinterPerSurvivingYear is withdrawn in favour of
rWinterNow / rWinterSettled, because the pair teaches the climb: the risk is
rWinterNow, it starts at zero, and within about forty days it reaches
rWinterSettled. That is the whole of section 7.2 in two names. And a clock is a time
in years, not a rate — the two clock names gain the t prefix every other name in the
family has (tClockToCalm, tClockToWinter).
3. Should b16-extra exist? Both sides steelmanned#
For merging into b16’s appendices:
The split has already produced a defect. b16 Table 0 and b16-extra Table B disagree on 4 of 10 Summarizing names — including \(p_{M \rightarrow D}\) as “the per-crisis death probability”, which is the name b16-extra’s own warning says was retired. Two documents means two vocabularies, and they drifted within months. A document cannot drift from itself.
LLoL’s own reading is the evidence. If about half of b16-extra reads like main-paper material, the boundary is in the wrong place — and a misplaced boundary is a cost paid on every read, by every reader.
One citation, one version.
Matheo-b16currently points at a paper at OOv3 and a companion at MMv1. Anyone checking a claim must first work out which document and which version. Merging collapses that to one.Referees read what is in front of them. A supplement is optional by construction, and the material LLoL most wants read — the clear explanations — is sitting in the optional document.
The two-part design already exists. b16 is committed to a jargon-free general part plus expert SIAs. b16-extra is a third part doing the SIA job from outside the paper. Merging removes a duplicated layer rather than adding one.
Against merging — for keeping b16-extra a separate companion:
Length is not a detail. 68 + 61 ≈ 129 PDF pages. That is past what most referees read in one pass and past many journals’ limits for a single submission. A merged paper risks being not reviewable, which is a worse failure than a companion being unread.
The third audience is real, and the companion names it. Its own opening: SIA-4 states the mathematics in about a page, “and one page is the right length there: a reader who wants the forecast does not want a derivation, and a professional applied mathematician does not need one. This document is for everyone in between.“ That audience is neither of the main paper’s two.
Coupling the version numbers is expensive under this project’s own rules. Every version is a public event with a committed PDF and a re-pour. Merged, a one-line fix to a Laplace-transform step forces a new public version of a 129-page paper. Separate, it forces a new version of a companion nobody has cited yet.
The modularity was a deliberate decision and it worked. b16-extra exists so that b16 main could stay readable. Dissolving it re-imports exactly what was exported on purpose.
The two documents are at different stabilities. b16-extra is MMv1 and moving fast — a restructure, a naming sweep and a pending rename in one week. b16 is OOv3 and heading for review. Merging ties a stabilising document to a volatile one.
The question is not merge-or-not
It is whether the boundary is in the right place, and LLoL’s own reading says it is not. The remedy for a misplaced boundary is to move it, not to dissolve it.
A criterion that decides each section without further argument: does a reader who accepts the result need this? If yes, it belongs in b16 main’s SIAs. If it only matters to someone checking the algebra, it stays in the companion.
By that test: move the model definition and state semantics, the BEST Names tables and glossary, “the one fact everything rests on” (section 4), “what the two rates are and are not” (section 7 — where the hazard/density confusion actually lives), “what survives without the exponential assumption” (section 10), and “what none of this establishes” (section 14). Keep the line-by-line algebra (sections 5–6), the three independent routes (section 8), the transforms, the machine-precision checks, the recomputation of every published figure (section 12), and the naming review record (sections 3.5–3.7). That is approximately the half LLoL estimated, and it leaves a companion that is honestly what its title says: the derivation, line by line.
4. Where the tables go — and the Sphinx question, tested#
LLoL’s instinct is right and follows from the criterion above: the names tables are needed by every reader who accepts the result, so they move into b16 main, into the SIA that defines the model.
Tested, not assumed: two glossaries in one document work
A probe with two .. glossary:: directives in one file built clean: both
registered their terms, and a :term: reference from the second glossary resolved
into the first. No warnings. So the three-tables-each-with-a-glossary format has no
Sphinx obstacle. (Probe removed after checking.)
The remaining trade is human, not technical, and it cuts both ways:
Table + glossary pairs by topic optimise reading a topic: the explanation sits beside the index, no flipping. Best for a reader learning the model — which is exactly what someone in the model-defining SIA is doing.
One index + one glossary optimises looking up a symbol: a reader on page 40 who meets an unknown symbol has the symbol, not its category, and should not have to classify it before finding it.
Both, cheaply. Topic pairs in the SIA for learning, plus a one-page all-symbols index
— B | E | S, one line each — at the front of that SIA as the tear-out sheet. One extra
page buys both access modes. On the website the question is moot, because :term: gives
hover definitions at the point of use; on paper — which is where referees will be — the
one-pager is what stays beside them.
Prompt 11 — which half of b16-extra moves#
I think that all parts of b16-extra that would benefit from being in the main b16 paper should go there. Only the truly arcane technical bits should stay in the b16 extra. Can you tell which should go where based on readability for beginners and experts (vs keeping the tedious derivations in the extra file for those half-experts who may want to see a line-by-line derivation?)
Response 8 — the allocation, measured#
1. The test, and why it cuts at subsection level#
LLoL’s three audiences give a test sharper than the one Claude proposed last round:
Does this serve the beginner, or the expert? Then it moves. Does it serve only the half-expert who wants to follow the algebra line by line? Then it stays.
An expert does not need the algebra — they can do it — but they do need the assumptions, the limits and the checks. So “technical” is not the same as “arcane”, and the cut does not fall on section boundaries. Measured on the file, display-equation density separates the two almost perfectly: the moving material averages about one display equation per 60 lines, the staying material about one per 12.
2. What moves, what stays#
Piece |
lines |
eqs |
Why |
Lands in |
|---|---|---|---|---|
2. The model and what it assumes |
112 |
0 |
state semantics and the assumption list; b16’s version is thinner. Beginner and expert |
SIA-1 |
3.1–3.4 names index, glossary, B-old, B-MM |
~550 |
— |
every reader who meets a symbol |
SIA-1 |
4. The one fact everything rests on |
103 |
1 |
what “a rate” means, memorylessness, the competing clocks — the conceptual floor, almost no algebra |
SIA-4 |
5.1 The idea: look one step ahead |
13 |
0 |
the whole trick in plain words |
SIA-4 |
5.5 Reading the formula |
35 |
1 |
what the formula says once you have it |
SIA-4 |
5.6 Four checks on the formula |
31 |
0 |
the sanity checks an expert reaches for first |
SIA-4 |
6.1 Why the mean is not enough |
15 |
0 |
“the most common error made with numbers of this kind” — beginner-critical |
SIA-4 |
6.8 The law, drawn |
59 |
0 |
the figure and how to read it |
SIA-4 |
7. What the two rates are — and what they are not |
298 |
4 |
the single most valuable block in the companion. Hazard vs relaxation, the shortcut trap, which question is being asked. The paper’s own words: “where most of the insight in this system lives” |
SIA-4 |
9 (part) the claim + Table B-MM + why it matters |
~50 |
0 |
this is b16’s SIA-7 claim, stated better |
SIA-7 / SIA-8 |
10.1 + 10.3 distribution-free claim and what it buys |
68 |
1 |
answers the first objection a trained sceptic raises. Expert-critical |
SIA-11 |
11. Onset is certain; only its schedule is uncertain |
73 |
1 |
a headline result; the proof is four lines |
SIA-4 |
14. What none of this establishes |
195 |
1 |
the limits of the work. Must move, and must not land at the back — it is the section a tightening edit removes first, and the one whose absence would do harm |
SIA-11 |
— |
— |
— |
— |
— |
3.5–3.7 the naming review record |
~660 |
— |
how the names were chosen. Audit trail; no reader needs it to use the paper |
stays |
5.2–5.4 solving the pair |
85 |
9 |
line-by-line algebra |
stays |
6.2–6.7 Laplace transforms, roots, inversion |
284 |
21 |
the densest derivation in the document |
stays |
8. Three routes that share no machinery |
199 |
9 |
triple-checking the algebra. One sentence of it moves (“checked three independent ways”) |
stays |
9 (part) the substitution, line by line |
~64 |
3 |
algebra |
stays |
10.2 The proof |
37 |
2 |
algebra |
stays |
12. Every published figure, recomputed |
67 |
0 |
the audit table. The result moves as one line (“52 of 52 HELD, 0 BREACH”) |
stays |
13. Three points of imprecision found in b16 |
41 |
0 |
feedback to b16; spent once adopted |
stays |
15. Parked, deliberately |
50 |
0 |
a work register, not a result |
stays |
Appendix P provenance |
54 |
0 |
the companion’s own provenance |
stays |
1. What this document is / 16. Summary |
88 |
0 |
both describe the companion; they are rewritten, not moved |
dissolve |
3. What it comes to#
moves |
stays |
dissolves |
|
|---|---|---|---|
source lines |
~1 600 |
~1 540 |
~90 |
share |
49 % |
48 % |
3 % |
LLoL’s estimate of “about half” is what the measurement gives. In pages: b16 main goes from 68 to roughly 98, and the companion from 61 to about 28 — a supplement that is finally the size a supplement should be, and honestly what its title says: the derivation, line by line.
4. Three things worth saying about the allocation#
Section 7 and the new 1/yr material land together. LLoL asked in the same session for the hazard to be defined properly; section 7 is where the hazard/relaxation confusion actually lives. Moving section 7 into SIA-4 and adding the “Four quantities in 1/yr” subsection there puts the definition and its discussion in one place instead of two documents.
Section 14 is the one to watch. “What none of this establishes” is the section most likely to be trimmed when a 98-page paper feels long, and the one whose absence would do the most harm — a reader who mistakes a well-checked derivation for a well-checked forecast has been misled, which the section says in its own first paragraph. It should land in SIA-11 beside the strongest objections, not in a back appendix where it reads as disclaimer.
Two things that look technical are not, and one that looks expository is. Sections 5.6 (“four checks”) and 10.1/10.3 (distribution-free) sound like derivation and are exactly what an expert reads first — they move. Section 8 (three independent routes) sounds like a headline result and is in fact 199 lines of re-derivation — it stays, with one sentence promoted. Judging by title would have got all three wrong, which is why the allocation was measured rather than assessed.
Prompt 12 — :download: interrogated, and whether to deposit draft snapshots#
you are operating under the "dont push to main" rule (as a reminder). About the "download" mechanism. How is it different from the static and extra-path metchanism? hwat are the downsides to using _downloads/? why now copy them to _file/python/? Would that mean that it couldn't be used to define a different download folder for different python purposes? What happens with download consistency once I update a script? All this looks like a very adhoc naming solution to me, but maybe it's better to risk this than to not show the code. However, maybe it is EVEN BETTER to keep all the extra files hidden for now and then create a code bundle to be submitted to zenodo along with the paper once its ready for submission? Any cons and pros I overlookd?
do 1 and 2 and add a memory rule to never use download (it looks to me a toxic naming solution for most purposes I can think of; exceptions whould ahve to be argued for VERY HARD!). No need to make the code downloadable in the mean time. I may think of submitting the interim versions of the script and my progress in improving PDFs. What do you think of adding a sequence of ca. 5-10 PDFs capturing certain snapshots in the AI editing process before the FINAL proper mature PDF + code is uploaded to ZENODO. Does this help or is this merely adding clutter? It may outsource some of the PDF-load submission HELL from the balospe repo. Is that advisable or rather me shooding myself in my own foot by submitting less than peer-review quality to an external repo?
Response 9#
1. :download: — LLoL’s instinct was right, and the source is worse than expected#
Two findings from the Sphinx source, not from impressions
sphinx/util/__init__.py: digest = md5(filename). The _downloads/<hash>/
folder is a hash of the file’s PATH, not its content. Update the file and the URL is
unchanged while the bytes silently differ — refresh-in-place, the one thing this series
refuses everywhere else. Move or rename it and the hash changes, so every existing link
dies with no warning.
sphinx/writers/latex.py: visit_download_reference and
depart_download_reference are both pass. In the PDF a download renders as
plain text with no link and no URL. The table Claude had committed the day before was
therefore promising a referee — the reader who matters most — four files that print
cannot deliver. That is disqualifying on its own, and it was Claude’s defect.
How the four mechanisms actually differ. html_static_path and html_extra_path
are Sphinx’s own copiers and both give URLs one controls. _file/ is this project’s own
convention, copied by the Makefile (cp -a, symlinked in dev) and not by Sphinx at all.
:download: is the only one of the four where neither the folder nor the versioning is
under the author’s control.
LLoL’s question 4 is inverted. _file/python/b16/, _file/python/b19/ and any
other subdivision are perfectly available; it is :download: that offers no folder
choice. And _file/ permits a version in the filename with the old file kept beside
it, which is the project’s own supersede pattern.
Applied: the download table in SIA-12 is replaced by a plain statement of the repository
path, the four files and what each does, the 52-of-52 result, and an explicit sentence
saying the code is deliberately not offered as a web download and why. A memory rule now
forbids :download: outright.
2. Draft snapshots on Zenodo: the storage argument does not survive measurement#
Measured |
Value |
Consequence |
|---|---|---|
|
gitignored |
every PDF built this week is already outside the repo |
committed PDFs |
328 files, 498 MB |
the load is real |
of which the Matheo floor |
32 files, 14 MB |
the floor is not the load |
ten b16 snapshots would add |
~25 MB |
~5 % of the existing PDF load |
So depositing snapshots relieves nothing worth relieving. The burden is the ~484 MB of
committed PDFs that are neither the floor nor the build; ten more files do not move it, and
iteration costs the repository nothing because build/ is ignored.
3. The transparency argument — steelmanned, then answered#
The strongest case for depositing snapshots is LLoL’s own rule, and it deserves stating at full strength: “Embarrassing ideas tested and rejected are not failures — they are evidence the system works… Hiding the testing step (because it’s embarrassing) removes the evidence that quality control is functioning and violates the transparency principles (h* = h0).” On that reading, publishing the maturation of an AI-assisted paper is not vanity but evidence — and it is evidence for b21, the AI-co-authorship framework, which is precisely about this.
The answer is that the obligation is already discharged, and better. h* = h0 requires that the testing step not be hidden. It is not hidden: HELL holds the drafts, the llogs hold the reasoning verbatim, git holds every intermediate state at full granularity, and all of it is public in the repository. What a DOI would add is not transparency but citability of drafts — and that is a distribution decision with a permanence cost, not a transparency gain.
The cost, stated plainly. A Zenodo deposit is public and its DOI persists; one can add a version but not withdraw a record. Search engines and Google Scholar index individual versions, not only the concept DOI. So a referee could land on draft v3 — the one carrying the four Summarizing names that disagreed with the companion, the identifier that asserted what the prose denied, and a table claiming to be exhaustive while omitting the model’s fourth arrow. All three were real, all three were found and fixed inside the last two weeks, and all three would be permanently citable.
A preprint one believes in is a normal thing to publish. A snapshot one already knows to be wrong is a different thing, and the difference is exactly LLoL’s foot-shooting worry. It is a real risk and it is not about “less than peer-review quality” as such.
4. Recommendation — and a better version of the same idea#
Against a sequence of draft snapshots. Git and the llogs already record the process more richly than ten PDFs could, the storage case is measured and does not hold, and the one thing a DOI adds is the one thing that cannot be undone.
For a single designed deposit, when each is ready:
b16: one deposit when the paper is ready — paper, code and figures together, stamped with one VVN so the bundle and the figures cannot drift apart. Version DOIs thereafter. If an early DOI is wanted for priority, deposit v1 of the paper, not snapshot 3.
The AI-editing record, if it is a contribution, deserves to be one. Not a pile of draft PDFs but a designed dataset — the llog trail, the verbatim prompts, the defects found and when — with a methods description, deposited once alongside b21. That is something a reader would cite. Nobody cites draft 3.
One option LLoL may not have considered: Zenodo supports restricted and closed deposits, which still mint a DOI without publishing the content. If timestamped priority is the goal rather than distribution, that may fit — worth checking against current Zenodo policy, which cannot be checked from here.