| from __future__ import annotations | |
| INDEX_FIELDS=('frontier+assumptions','formulations+objects','transformations','scales+limits','explicit_structure','constraints+falsifiers+certification','theorem_pointers') | |
| def extraction_contract(facts): | |
| if not facts:return {'mode':'PRIMARY_INDEX','fields':list(INDEX_FIELDS),'read_scope':'metadata+abstract+TOC+theorem/definition headings','rule':'pointers first; no whole-paper summary','serendipity_pointer_slots':1} | |
| return {'mode':'TARGETED_DETAIL','fact_schema':'generic typed atoms; exact interfaces; no route labels','read_scope':'selected theorem/lemma/definition ranges only','rule':'source-supported atoms; assumptions+provenance mandatory','serendipity_pointer_slots':1} | |