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:
parent
e4804adabc
commit
84124de143
450 changed files with 52813 additions and 1202 deletions
51
tests/test_llm_curriculum_data.py
Normal file
51
tests/test_llm_curriculum_data.py
Normal 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)
|
||||
Loading…
Add table
Add a link
Reference in a new issue