25 lines
2.0 KiB
Python
25 lines
2.0 KiB
Python
#!/usr/bin/env python3
|
|
"""Validate Prashna Sphuta human review result templates."""
|
|
from __future__ import annotations
|
|
import argparse, json
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
TEMPLATE = ROOT / "references/oracle/prashna_sphuta_review_result_template_2026_07_20.json"
|
|
OUT = ROOT / "references/oracle/prashna_sphuta_review_result_validation_2026_07_20.json"
|
|
|
|
def build(date):
|
|
src=json.load(open(TEMPLATE)); rows=[]
|
|
for t in src['templates']:
|
|
missing=[]
|
|
if t.get('review_result') is None: missing.append('review_result')
|
|
for f in t['required_human_fields']:
|
|
if not t.get(f): missing.append(f)
|
|
valid=not missing and t.get('review_result') in t['allowed_results']
|
|
rows.append({'task_id':t['task_id'],'validation_status':'valid_completed_review' if valid else 'blocked_missing_human_review','missing_fields':missing,'review_result':t.get('review_result'),'replay_gate_ready':False,'claim_boundary':'Validation only; replay gate also requires complete Prashna input.'})
|
|
return {'scope':'prashna_sphuta_review_result_validation','created_at':date,'status':'validation_ready','claim_status':'blocked_until_human_labels','production_tuning_allowed':False,'truth_matrix_allowed':False,'allowed_results':src['templates'][0]['allowed_results'],'replay_gate_policy':'requires_valid_completed_review_and_complete_prashna_input','summary':{'template_count':len(rows),'valid_completed_review_count':sum(r['validation_status']=='valid_completed_review' for r in rows),'replay_gate_ready_count':0},'validation_rows':rows,'boundary':'Blank templates remain blocked; completed review alone still cannot upgrade truth without replay.'}
|
|
|
|
def main():
|
|
ap=argparse.ArgumentParser(); ap.add_argument('--date',default='2026-07-20'); args=ap.parse_args(); data=build(args.date); OUT.write_text(json.dumps(data,ensure_ascii=False,indent=2,sort_keys=True)+'\n'); print(json.dumps(data,ensure_ascii=False,indent=2,sort_keys=True))
|
|
if __name__=='__main__': main()
|