Add jyotish oracle evidence calibration gate

This commit is contained in:
732642856
2026-06-25 18:33:26 +08:00
parent bff6ec4685
commit 5d35731f8b
90 changed files with 6798 additions and 330 deletions
@@ -5,19 +5,22 @@
#!/usr/bin/env python3
import csv
import json
import os
import subprocess
import sys
from datetime import date
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
SKILL_SCRIPT = Path(__file__).resolve().parents[2] / 'scripts' / 'jyotish_engine.py'
REPO_ROOT = Path(os.environ.get('JYOTISH_BENCHMARK_ROOT', Path(__file__).resolve().parents[3])).resolve()
SKILL_SCRIPT = Path(os.environ.get('JYOTISH_SKILL_SCRIPT', REPO_ROOT / 'scripts' / 'jyotish_engine.py')).resolve()
PYTHON = Path(sys.executable)
DATA = ROOT / 'data/benchmark_samples.json'
OUT = ROOT / 'outputs'
RAW = OUT / 'raw'
SHADBALA_OUT = OUT / 'shadbala_invariants'
PLANETS = ['Sun', 'Moon', 'Mars', 'Mercury', 'Jupiter', 'Venus', 'Saturn']
NAISARGIKA = {'Sun': 60.0, 'Moon': 60.0, 'Venus': 52.5, 'Jupiter': 45.0, 'Mercury': 37.5, 'Mars': 30.0, 'Saturn': 22.5}
NAISARGIKA = {'Sun': 60.0, 'Moon': 51.43, 'Venus': 42.86, 'Jupiter': 34.29, 'Mercury': 25.71, 'Mars': 17.14, 'Saturn': 8.57}
MIN_REQUIRED = {'Sun': 5.0, 'Moon': 6.0, 'Mars': 5.0, 'Mercury': 7.0, 'Jupiter': 6.5, 'Venus': 5.5, 'Saturn': 5.0}
@@ -107,10 +110,10 @@ def validate_shadbala(sample, shadbala, full_reading):
range_checks = {
'sthana.ucha_bala_range': (sthana.get('ucha_bala'), 0, 60),
'sthana.ojayugma_enum': (sthana.get('ojayugma_bala'), {0, 15}, None),
'sthana.kendra_enum': (sthana.get('kendra_bala'), {0, 15}, None),
'sthana.kendra_enum': (sthana.get('kendra_bala'), {15.0, 30.0, 60.0}, None),
'sthana.drekkana_enum': (sthana.get('drekkana_bala'), {0, 15}, None),
'dig_bala_range': (pdata.get('dig_bala'), 0, 60),
'kala.total_range': (kala.get('total'), 0, 195),
'kala.total_range': (kala.get('total'), 0, 225),
'chesta_bala_range': (pdata.get('chesta_bala'), 0, 60),
'drik_bala_range': (pdata.get('drik_bala'), -60, 60),
}
@@ -155,7 +158,7 @@ def write_report(rows):
lines = []
lines.append('# Jyotish benchmark 第九轮 Shadbala 内部不变量报告')
lines.append('')
lines.append('生成时间:2026-06-04')
lines.append(f'生成时间:{date.today().isoformat()}')
lines.append('')
lines.append('## 1. 范围')
lines.append('')
@@ -192,8 +195,8 @@ def write_report(rows):
lines.append('- Shadbala 内部一致性存在失败项,应先修复输出或公式聚合。')
else:
lines.append('- Shadbala 输出结构、总分聚合、Rupa/Virupa换算、排名、full-reading一致性均通过内部不变量验证。')
lines.append('- 但源码仍包含简化项:Nathonnata Bala 二值化、部分 Saptavargaja 子分盘近似、Chesta Bala 速度分档近似、Drik Bala 简化相位权重')
lines.append('- 因此能力标注应从 `covered` 降级为 `partial`:可作为内部一致的强弱参考,不应声称已完成传统 Parashara Shadbala 的外部绝对值校准')
lines.append('- 本报告验证内部绝对值不变量:每颗星 total_virupas 等于 Sthana/Dig/Kala/Chesta/Naisargika/Drik 六项合计,且 total_rupas = total_virupas / 60')
lines.append('- 这不是外部软件逐项对标;传统 Parashara Shadbala 的最终置信度仍需要 JHora/PyJHora/PDF oracle 做逐项差异审计')
report = OUT / 'jyotish_benchmark_round9_shadbala_invariants.md'
report.write_text('\n'.join(lines))
return report