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}