|
|
| from __future__ import annotations
|
| import argparse,json
|
| from pathlib import Path
|
| from .capsule_guard import audit_all
|
| from .session import DiscoverySession
|
| from .claim_ir import summary,token_estimate
|
| from .budget import policy as budget_policy
|
| from .retrieval_transducer import RetrievalTransducer
|
| from .verifier_router import route
|
|
|
| def load_capsules(path):return json.loads(Path(path).read_text())['capsules']
|
| def run(problem,capsules=None):
|
| capsules=capsules or [];s=DiscoverySession(problem);audit=audit_all(capsules) if capsules else {'pass':True,'items':[]}
|
| add={'recompute_count':0,'rule_evaluations':0}
|
| if audit['pass'] and capsules:add=s.add_capsules(capsules,True)
|
| snap=s.snapshot();results=snap['results'];delta=s.flush_model_delta() if capsules else {'frontier_delta_ir':[],'frontier_delta_estimated_tokens':0,'delta_count':0,'visible_count':0,'flush_index':0,'should_infer':False,'unresolved_facet_burden':len(snap.get('facet_coverage',[]))}
|
| rt=RetrievalTransducer(problem);boot=rt.bootstrap();next_plan=boot if not capsules else snap['retrieval_plan'];verified=set(s.fg.facts)
|
| return {'schema':'eureka_math_runtime/v1','problem':problem,'retrieval_plan':next_plan,'retrieval_execution':{'mode':'FACET_GUIDED_RETRIEVAL','outer_model_roundtrips_target':1,'common_path_queries':3,'fallback_query_cap':1,'stop_rule':'generic facet-count saturation; no required type conjunction'},'source_intake':snap['source_intake'],'capsule_audit':audit,'structural_results':results,'model_frontier_ir':[summary(r) for r in results],'model_frontier_delta':delta,'truth_fact_count':len(s.fg.facts),'facet_coverage':snap['facet_coverage'],'active_context':{'deterministic_operator_model_calls':0,'frontier_delta_estimated_tokens':delta['frontier_delta_estimated_tokens'],'full_frontier_ir_estimated_tokens':token_estimate([summary(r) for r in results]),'rule_evaluations':add.get('rule_evaluations',0),'policy':'incremental typed exact agenda external; compact changed state only'},'verification_routes':[route(r,verified,True) for r in results],'budget_policy':budget_policy(),'claim_policy':'rewrite=zero progress; theorem/record credit needs independent replay + exact/formal verification','controller_policy':'facet-guided retrieval; neutral facet saturation; incremental exact agenda; delta-only merge; no-op suppression; failure-aware cost routing'}
|
| def main():
|
| p=argparse.ArgumentParser();p.add_argument('--problem',required=True);p.add_argument('--capsules');z=p.parse_args();caps=load_capsules(z.capsules) if z.capsules else [];print(json.dumps(run(z.problem,caps),ensure_ascii=False,indent=2))
|
| if __name__=='__main__':main()
|
|
|