paper: claim-narrowing revision from the external review

The review's core instruments adopted: the interpretation/explanation/
prediction ladder is now explicit in §1 (with the decisive pre-merge
epistasis-prediction test stated as the open bar, not claimed); identity
claims scoped (WF exact only in the minimal model, with the
learning-kernel deviation cited against ourselves; Muller's ratchet
scoped to the irreversible arm — recombination reassembles only what
survives); "nobody has / none imports / theory outrun" removed;
merge-don't-average given explicit operator boundaries (output-mean vs
weight-average vs routing vs max-with-oracle; budgets; oracle; capacity
handoff to speciation); a "what these experiments do and do not
establish" scope block added to the speciation section (conflict floor
is information-theoretic, not genetic; epistasis-cliff + snowball =
hypotheses at the neural tier; emergent DMIs = flagship hypothesis,
bounded by our null); "control theory" -> "framework" (subtitle
included); §3/§11 overstatements fixed (frozen core != frozen behaviour;
Baldwin echo, not identity; operational vs archival irreversibility);
claims-at-a-glance table (status/assumptions/evidence/limits) added to
§13. Reviewer's framing sentence adopted as the stated core
contribution. Accessible version calibrated to match. md2tex gains pipe-
table support; PDF rebuilds clean (22 pp). Lessons recorded.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BkRLcc18rwT2Lysu6PbG7v
This commit is contained in:
Giorgio Gilestro 2026-09-06 15:14:28 +01:00
parent d6a5c5cacd
commit 58e6c74609
6 changed files with 238 additions and 86 deletions

View file

@ -121,10 +121,28 @@ def convert(text: str) -> str:
while fig_queue:
out.append(fig_queue.pop(0)); out.append("")
def emit_table(block: list[str], out: list[str]) -> None:
"""Pipe table -> small-font tabular with wrapped paragraph columns (full text width)."""
rows = [[c.strip() for c in line.strip().strip("|").split("|")] for line in block]
header, body = rows[0], [r for r in rows[2:]] # rows[1] is the |---| separator
n = len(header)
widths = " ".join([f"p{{{0.92 / n:.3f}\\textwidth}}"] * n)
out.append("\\medskip\\noindent\\begin{center}\\footnotesize") # non-floating: stays in place
out.append(f"\\begin{{tabular}}{{{widths}}}")
out.append("\\hline")
out.append(" & ".join(inline(c) for c in header) + " \\\\ \\hline")
for r in body:
r = (r + [""] * n)[:n]
out.append(" & ".join(inline(c) for c in r) + " \\\\[3pt]")
out.append("\\hline\\end{tabular}\\end{center}\\medskip")
out.append("")
out: list[str] = []
for block in blocks:
first = block[0].strip()
if first == "---" and len(block) == 1:
if first.startswith("|") and len(block) >= 2 and set(block[1].strip()) <= set("|-: "):
emit_table(block, out)
elif first == "---" and len(block) == 1:
out.append("\\medskip\\hrule\\medskip"); out.append("")
elif first.startswith("## "):
out.append(f"\\section*{{{inline(first[3:])}}}"); out.append("")