Manuscript revision and pending experiment work, snapshot before restructuring

Clarity pass over the main text (36-item audit), Discussion rewrite and cut,
acknowledgements, Souly et al. as ref 62, lettered SI panels, model section
moved under Results; plus the untracked curriculum/society/compose/smol
configs, runners, figures, stats and tests that the SI already cites.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y64o8FKP7rCuXzC48pxpMm
This commit is contained in:
Giorgio Gilestro 2026-09-13 16:54:09 +01:00
parent e4804adabc
commit 84124de143
450 changed files with 52813 additions and 1202 deletions

View file

@ -0,0 +1,51 @@
"""Verifier tests for the real-dataset curriculum (no network: constructs Tasks by hand)."""
import json
from llm.curriculum_data import FORMATS, REAL_FAMILIES, _squad_norm, verify_real
from llm.tasks import Task
def test_every_registered_family_has_a_format():
assert set(REAL_FAMILIES) == set(FORMATS)
assert set(FORMATS.values()) <= {"number", "code", "label", "span", "text"}
def test_number_verifier_reads_after_hash_or_last_number():
t = Task("gsm8k", "p", "blah blah\n#### 18")
assert verify_real("so the total is 18", t)
assert verify_real("reasoning... #### 18.0", t)
assert not verify_real("the answer is 17", t)
def test_label_verifier_takes_first_line_and_strips_answer_prefix():
t = Task("mnli", "p", "entailment")
assert verify_real("Answer: entailment\nbecause...", t)
assert verify_real("entailment", t)
assert not verify_real("neutral", t)
b = Task("boolq", "p", "yes")
assert verify_real("Yes.", b) and not verify_real("no", b)
w = Task("winogrande", "p", "2")
assert verify_real("2", w) and not verify_real("1", w)
def test_span_verifier_normalises_and_accepts_any_alias():
t = Task("squad", "p", "the Eiffel Tower",
json.dumps({"aliases": ["the Eiffel Tower", "Eiffel Tower"]}))
assert verify_real("Eiffel tower", t) # article + case
assert verify_real("Answer: The Eiffel Tower.", t)
assert not verify_real("Louvre", t)
assert _squad_norm("The Eiffel-Tower!") == "eiffeltower" or _squad_norm("The Eiffel Tower") == "eiffel tower"
def test_text_verifier_uses_aliases():
t = Task("nq_open", "p", "1969", json.dumps({"aliases": ["1969", "July 1969"]}))
assert verify_real("July 1969", t) and verify_real("1969", t) and not verify_real("1970", t)
def test_code_verifier_executes_reference_tests():
t = Task("mbpp", "p", "```python\ndef add(a, b):\n return a + b\n```",
json.dumps({"tests": ["assert add(1, 2) == 3", "assert add(-1, 1) == 0"], "setup": ""}))
assert verify_real(t.answer, t) # the reference passes
assert not verify_real("```python\ndef add(a, b):\n return a - b\n```", t)
assert not verify_real("I don't know", t)