Consolidate oracle benchmark inventory
This commit is contained in:
@@ -205,8 +205,10 @@ description: 印度占星(Jyotish)专业解盘与推运系统。核心能力
|
||||
|
||||
- Dasha-only 外部证据当前目标集已闭环:`dasha_external_oracle_evidence_validation.valid_dasha_packets: 3/3`;Steve Jobs / Lahiri、REDACTED_YEAR Lahiri 模板与 1800 Delhi historical epoch 的 Vimshottari 起始边界来自 PyJHora 4.8.7 隔离黑盒 stdout artifact。
|
||||
- 全局 Dasha/Shadbala Calibration Status 仍未完成:`external_oracle_evidence_validation.valid_packets: 4`,`ready_for_calibration: 4`;Shadbala 外部绝对值当前目标集已通过 4/4,Raman 扩展样本与非 Dasha 靶点尚未封顶。
|
||||
- 历史 UI 静态门禁仍保留旧提示 `ready_for_calibration: 0` 作为“不得过度宣称”的保守文案;实际进度必须以当前 `oracle_collection_queue.py` / `oracle_evidence_validator.py` 输出为准。
|
||||
- Tajika/Sahams 年运外部样本已开始闭环:`tajika_sahams_annual_benchmark_dashboard.ready_for_calibration: 1/5`;Steve Jobs 1984 Varshaphala/Lahiri 的 solar return、Varsha Lagna、Muntha、Year Lord、Mudda Dasha 首主、三项 Sahams 与 Tajika Yogas 已由 PyJHora 4.8.7 隔离黑盒 artifact 验证,下一优先级为 Einstein 1905。仍不得声称 Tajika/Sahams 年运体系已全局封顶。
|
||||
- D1/D9/SAV 高可信;Dasha 精细日期可引用已验证 Dasha-only 样本的局部进度,但不得把全部大运边界、Shadbala 绝对值或全局精度说成已完成外部校准。
|
||||
- 不得把大运起点或 Shadbala 绝对值说成已完成外部校准;涉及具体日期/绝对力量值时,必须同时报告 `Dasha/Shadbala Calibration Status`、`external_oracle_evidence_validation` 与 `production_tuning_allowed: false` 边界。
|
||||
- `production_tuning_allowed: false` 前,禁止为了贴合单份 PDF、单个 JHora 截图或本仓库本地输出而改生产常数。
|
||||
- 对普通用户的建议话术:基础落座、D9、SAV 可作为稳定证据;当前 Dasha-only 目标集已完成外部黑盒验证,但多 Dasha 家族、Antardasha/Pratyantar 细边界仍需扩展;Shadbala 当前目标集已有四个外部六分量样本,绝对值断语可引用 4/4 闭合进度;但跨软件差异、Raman 扩展样本与公开书例仍需更多证据后再提升到全局置信。
|
||||
- 工作流要求:Dasha-only packet 用 `python3 scripts/dasha_oracle_evidence_validator.py --queue-file <queue.json>` 验证;全局校准仍必须跑 `python3 scripts/oracle_evidence_validator.py --queue-file <queue.json>`,两者不可混用。
|
||||
@@ -321,8 +323,8 @@ python3 scripts/validate_interpretation_templates.py --format markdown
|
||||
> 这部分比“再加几个技法名”更重要,决定 skill 距离传统软件级深度还有多远。
|
||||
|
||||
1. **Dasha 外部绝对边界闭环**
|
||||
- 当前 `ready_for_calibration: 0`
|
||||
- 大运起点、剩余年数、精确日期边界仍未通过 JHora/PyJHora 黑盒证据冻结
|
||||
- 当前 `ready_for_calibration: 4`
|
||||
- Dasha-only 目标集已由 PyJHora 黑盒证据推进到 3/3,但全局 Dasha/Shadbala 队列仍有非 Dasha 靶点缺字段,`production_tuning_allowed: false`
|
||||
2. **Shadbala 外部绝对值闭环**
|
||||
- 当前 absolute Rupa 结构自洽,但还不是外部绝对值完全校准
|
||||
3. **Chara Dasha 共主仲裁尾差**
|
||||
|
||||
@@ -29,9 +29,13 @@ This file is the small index for the current engineering fronts that still drive
|
||||
|
||||
## Oracle Closure
|
||||
|
||||
- `/Users/wuyongnaren/Documents/印度占星/docs/research/oracle_benchmark_inventory_latest.md`
|
||||
- `/Users/wuyongnaren/Documents/印度占星/docs/research/oracle_benchmark_inventory_latest.json`
|
||||
- `/Users/wuyongnaren/Documents/印度占星/docs/research/oracle_closure_master_dashboard_latest.md`
|
||||
- `/Users/wuyongnaren/Documents/印度占星/docs/research/public_benchmark_dashboard_latest.md`
|
||||
- `/Users/wuyongnaren/Documents/印度占星/references/oracle/`
|
||||
- Before changing oracle-dependent adjudicator or benchmark claims, run:
|
||||
- `python3 scripts/oracle_benchmark_inventory.py --format json`
|
||||
|
||||
## VedAstro Adapter MVP
|
||||
|
||||
|
||||
@@ -12,6 +12,8 @@ Purpose: make the ephemeris roadmap probeable instead of relying on UI labels or
|
||||
| `vedastro` | MIT full-stack product/API benchmark and service-boundary adapter candidate | `service_adapter_candidate` | Can inform API, OpenAPI, chat, Panchanga, and product workflow design; C# core should stay behind an API/service boundary if reused | Reuse product/API ideas and progress through an adapter contract, not as a drop-in Python ephemeris |
|
||||
| `pyjhora_benchmark` | Broad JHora-style behavior/oracle benchmark | `benchmark_only` | AGPL; do not copy implementation code into this app unless the whole downstream license posture is changed | Use only expected outputs, public examples, and behavior comparisons |
|
||||
|
||||
Probe compatibility note: `external_benchmark_benchmark` is retained as a machine-readable role alias for external API/product comparison surfaces such as VedAstro. It is a benchmark role, not permission to import external implementation code or treat external output as production tuning without oracle validation.
|
||||
|
||||
## Probe
|
||||
|
||||
Run:
|
||||
|
||||
@@ -0,0 +1,641 @@
|
||||
{
|
||||
"scope": "oracle_benchmark_single_truth_inventory",
|
||||
"schema_version": 1,
|
||||
"generated_at": "2026-06-28T07:20:42.310743+00:00",
|
||||
"summary": {
|
||||
"oracle_registry_count": 3,
|
||||
"oracle_case_count": 9,
|
||||
"evidence_template_count": 4,
|
||||
"pending_packet_count": 19,
|
||||
"pending_pyjhora_packet_count": 8,
|
||||
"pending_non_pyjhora_packet_count": 11,
|
||||
"pyjhora_artifact_count": 8,
|
||||
"dashboard_count": 4
|
||||
},
|
||||
"fronts": {
|
||||
"ashtakoot": {
|
||||
"oracle_registry_count": 1,
|
||||
"oracle_case_count": 0,
|
||||
"evidence_template_count": 0,
|
||||
"pending_packet_count": 0,
|
||||
"pyjhora_artifact_count": 0,
|
||||
"dashboard_count": 0
|
||||
},
|
||||
"dasha": {
|
||||
"oracle_registry_count": 0,
|
||||
"oracle_case_count": 0,
|
||||
"evidence_template_count": 1,
|
||||
"pending_packet_count": 4,
|
||||
"pyjhora_artifact_count": 3,
|
||||
"dashboard_count": 0
|
||||
},
|
||||
"general": {
|
||||
"oracle_registry_count": 0,
|
||||
"oracle_case_count": 9,
|
||||
"evidence_template_count": 1,
|
||||
"pending_packet_count": 3,
|
||||
"pyjhora_artifact_count": 0,
|
||||
"dashboard_count": 2
|
||||
},
|
||||
"shadbala": {
|
||||
"oracle_registry_count": 1,
|
||||
"oracle_case_count": 0,
|
||||
"evidence_template_count": 1,
|
||||
"pending_packet_count": 6,
|
||||
"pyjhora_artifact_count": 4,
|
||||
"dashboard_count": 0
|
||||
},
|
||||
"tajika_sahams": {
|
||||
"oracle_registry_count": 1,
|
||||
"oracle_case_count": 0,
|
||||
"evidence_template_count": 1,
|
||||
"pending_packet_count": 6,
|
||||
"pyjhora_artifact_count": 1,
|
||||
"dashboard_count": 2
|
||||
}
|
||||
},
|
||||
"files": {
|
||||
"oracle_registries": [
|
||||
{
|
||||
"path": "references/oracle/ashtakoot_oracle_cases.json",
|
||||
"name": "ashtakoot_oracle_cases.json",
|
||||
"category": "oracle_registry",
|
||||
"front": "ashtakoot",
|
||||
"bytes": 5726,
|
||||
"json_valid": true,
|
||||
"scope": "external_ashtakoot_oracle_cases",
|
||||
"schema_version": 1,
|
||||
"template_cases_count": 5
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/dasha_shadbala_oracle_cases.json",
|
||||
"name": "dasha_shadbala_oracle_cases.json",
|
||||
"category": "oracle_registry",
|
||||
"front": "shadbala",
|
||||
"bytes": 20265,
|
||||
"json_valid": true,
|
||||
"scope": "external_dasha_shadbala_oracle_boundary_cases",
|
||||
"schema_version": 1,
|
||||
"template_cases_count": 5,
|
||||
"longitude_cases_count": 1
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/tajika_annual_oracle_cases.json",
|
||||
"name": "tajika_annual_oracle_cases.json",
|
||||
"category": "oracle_registry",
|
||||
"front": "tajika_sahams",
|
||||
"bytes": 8557,
|
||||
"json_valid": true,
|
||||
"scope": "external_tajika_sahams_annual_oracle_cases",
|
||||
"schema_version": 1,
|
||||
"template_cases_count": 5
|
||||
}
|
||||
],
|
||||
"oracle_cases": [
|
||||
{
|
||||
"path": "references/oracle/cases/albert_einstein.json",
|
||||
"name": "albert_einstein.json",
|
||||
"category": "oracle_case",
|
||||
"front": "general",
|
||||
"bytes": 108,
|
||||
"json_valid": true
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/cases/elon_musk.json",
|
||||
"name": "elon_musk.json",
|
||||
"category": "oracle_case",
|
||||
"front": "general",
|
||||
"bytes": 108,
|
||||
"json_valid": true
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/cases/equator_quito.json",
|
||||
"name": "equator_quito.json",
|
||||
"category": "oracle_case",
|
||||
"front": "general",
|
||||
"bytes": 108,
|
||||
"json_valid": true
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/cases/historical_dst_london_1943.json",
|
||||
"name": "historical_dst_london_1943.json",
|
||||
"category": "oracle_case",
|
||||
"front": "general",
|
||||
"bytes": 108,
|
||||
"json_valid": true
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/cases/katy_perry.json",
|
||||
"name": "katy_perry.json",
|
||||
"category": "oracle_case",
|
||||
"front": "general",
|
||||
"bytes": 108,
|
||||
"json_valid": true
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/cases/marilyn_monroe.json",
|
||||
"name": "marilyn_monroe.json",
|
||||
"category": "oracle_case",
|
||||
"front": "general",
|
||||
"bytes": 108,
|
||||
"json_valid": true
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/cases/polar_reykjavik.json",
|
||||
"name": "polar_reykjavik.json",
|
||||
"category": "oracle_case",
|
||||
"front": "general",
|
||||
"bytes": 108,
|
||||
"json_valid": true
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/cases/steve_jobs.json",
|
||||
"name": "steve_jobs.json",
|
||||
"category": "oracle_case",
|
||||
"front": "general",
|
||||
"bytes": 108,
|
||||
"json_valid": true
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/cases/yinan_video_truth_2026_06_28.json",
|
||||
"name": "yinan_video_truth_2026_06_28.json",
|
||||
"category": "oracle_case",
|
||||
"front": "general",
|
||||
"bytes": 1970,
|
||||
"json_valid": true
|
||||
}
|
||||
],
|
||||
"evidence_templates": [
|
||||
{
|
||||
"path": "references/oracle/evidence_packet_templates/dasha_steve_jobs_lahiri_first_packet_only.json",
|
||||
"name": "dasha_steve_jobs_lahiri_first_packet_only.json",
|
||||
"category": "evidence_template",
|
||||
"front": "dasha",
|
||||
"bytes": 1208,
|
||||
"json_valid": true,
|
||||
"status": "draft",
|
||||
"case_id": "template_steve_jobs_dasha_lahiri",
|
||||
"capture_id": "external_template_steve_jobs_dasha_lahiri",
|
||||
"source_artifact": "references/oracle/artifacts/",
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "true",
|
||||
"target_placeholder_count": 1
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/evidence_packet_templates/jhora_steve_jobs_lahiri_first_packet.json",
|
||||
"name": "jhora_steve_jobs_lahiri_first_packet.json",
|
||||
"category": "evidence_template",
|
||||
"front": "general",
|
||||
"bytes": 2803,
|
||||
"json_valid": true,
|
||||
"status": "draft",
|
||||
"case_id": "template_steve_jobs_dasha_lahiri",
|
||||
"capture_id": "external_template_steve_jobs_dasha_lahiri",
|
||||
"source_artifact": "references/oracle/artifacts/",
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "true",
|
||||
"target_placeholder_count": 2
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/evidence_packet_templates/shadbala_redacted_place_raman_first_packet.json",
|
||||
"name": "shadbala_redacted_place_raman_first_packet.json",
|
||||
"category": "evidence_template",
|
||||
"front": "shadbala",
|
||||
"bytes": 2695,
|
||||
"json_valid": true,
|
||||
"status": "draft",
|
||||
"case_id": "template_redacted_place_shadbala_raman",
|
||||
"capture_id": "external_template_redacted_place_shadbala_raman",
|
||||
"source_artifact": "references/oracle/artifacts/",
|
||||
"ayanamsa": "raman",
|
||||
"node_mode": "mean",
|
||||
"target_placeholder_count": 2
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/evidence_packet_templates/tajika_steve_jobs_1984_first_packet.json",
|
||||
"name": "tajika_steve_jobs_1984_first_packet.json",
|
||||
"category": "evidence_template",
|
||||
"front": "tajika_sahams",
|
||||
"bytes": 1783,
|
||||
"json_valid": true,
|
||||
"status": "draft",
|
||||
"case_id": "template_steve_jobs_varshaphala_1984_lahiri",
|
||||
"capture_id": "external_template_steve_jobs_varshaphala_1984_lahiri",
|
||||
"source_artifact": "references/oracle/artifacts/",
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "true",
|
||||
"annual_system": "varshaphala",
|
||||
"target_year": 1984,
|
||||
"target_placeholder_count": 10
|
||||
}
|
||||
],
|
||||
"pending_packets": [
|
||||
{
|
||||
"path": "references/oracle/artifacts/pending_packets/capture_manifest.json",
|
||||
"name": "capture_manifest.json",
|
||||
"category": "pending_packet",
|
||||
"front": "general",
|
||||
"bytes": 796,
|
||||
"json_valid": true,
|
||||
"scope": "external_oracle_capture_packet_manifest"
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/artifacts/pending_packets/external_template_einstein_varshaphala_1905_lahiri.json",
|
||||
"name": "external_template_einstein_varshaphala_1905_lahiri.json",
|
||||
"category": "pending_packet",
|
||||
"front": "tajika_sahams",
|
||||
"bytes": 1687,
|
||||
"json_valid": true,
|
||||
"status": "draft",
|
||||
"case_id": "template_einstein_varshaphala_1905_lahiri",
|
||||
"capture_id": "external_template_einstein_varshaphala_1905_lahiri",
|
||||
"source_artifact": "references/oracle/artifacts/",
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "mean",
|
||||
"annual_system": "varshaphala",
|
||||
"target_year": 1905,
|
||||
"target_placeholder_count": 10
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/artifacts/pending_packets/external_template_extreme_latitude_kp.json",
|
||||
"name": "external_template_extreme_latitude_kp.json",
|
||||
"category": "pending_packet",
|
||||
"front": "general",
|
||||
"bytes": 2543,
|
||||
"json_valid": true,
|
||||
"status": "draft",
|
||||
"case_id": "template_extreme_latitude_kp",
|
||||
"capture_id": "external_template_extreme_latitude_kp",
|
||||
"source_artifact": "references/oracle/artifacts/",
|
||||
"ayanamsa": "kp",
|
||||
"node_mode": "true",
|
||||
"target_placeholder_count": 2
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/artifacts/pending_packets/external_template_extreme_latitude_kp_pyjhora_20260627.json",
|
||||
"name": "external_template_extreme_latitude_kp_pyjhora_20260627.json",
|
||||
"category": "pending_packet",
|
||||
"front": "general",
|
||||
"bytes": 3054,
|
||||
"json_valid": true,
|
||||
"status": "external_verified",
|
||||
"case_id": "template_extreme_latitude_kp",
|
||||
"capture_id": "external_template_extreme_latitude_kp",
|
||||
"source_artifact": "references/oracle/artifacts/pyjhora_extreme_latitude_kp_shadbala_stdout_20260627.txt",
|
||||
"tool_name": "PyJHora",
|
||||
"ayanamsa": "kp",
|
||||
"node_mode": "true",
|
||||
"target_placeholder_count": 2
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/artifacts/pending_packets/external_template_redacted_place_shadbala_raman.json",
|
||||
"name": "external_template_redacted_place_shadbala_raman.json",
|
||||
"category": "pending_packet",
|
||||
"front": "shadbala",
|
||||
"bytes": 2563,
|
||||
"json_valid": true,
|
||||
"status": "draft",
|
||||
"case_id": "template_redacted_place_shadbala_raman",
|
||||
"capture_id": "external_template_redacted_place_shadbala_raman",
|
||||
"source_artifact": "references/oracle/artifacts/",
|
||||
"ayanamsa": "raman",
|
||||
"node_mode": "mean",
|
||||
"target_placeholder_count": 2
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/artifacts/pending_packets/external_template_redacted_place_shadbala_raman_pyjhora_20260627.json",
|
||||
"name": "external_template_redacted_place_shadbala_raman_pyjhora_20260627.json",
|
||||
"category": "pending_packet",
|
||||
"front": "shadbala",
|
||||
"bytes": 3173,
|
||||
"json_valid": true,
|
||||
"status": "external_verified",
|
||||
"case_id": "template_redacted_place_shadbala_raman",
|
||||
"capture_id": "external_template_redacted_place_shadbala_raman",
|
||||
"source_artifact": "references/oracle/artifacts/pyjhora_redacted_place_shadbala_raman_stdout_20260627.txt",
|
||||
"tool_name": "PyJHora",
|
||||
"ayanamsa": "raman",
|
||||
"node_mode": "mean",
|
||||
"target_placeholder_count": 2
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/artifacts/pending_packets/external_template_historical_dst_london_varshaphala_1943_lahiri.json",
|
||||
"name": "external_template_historical_dst_london_varshaphala_1943_lahiri.json",
|
||||
"category": "pending_packet",
|
||||
"front": "tajika_sahams",
|
||||
"bytes": 1699,
|
||||
"json_valid": true,
|
||||
"status": "draft",
|
||||
"case_id": "template_historical_dst_london_varshaphala_1943_lahiri",
|
||||
"capture_id": "external_template_historical_dst_london_varshaphala_1943_lahiri",
|
||||
"source_artifact": "references/oracle/artifacts/",
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "mean",
|
||||
"annual_system": "varshaphala",
|
||||
"target_year": 1943,
|
||||
"target_placeholder_count": 10
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/artifacts/pending_packets/external_template_historical_epoch_lahiri.json",
|
||||
"name": "external_template_historical_epoch_lahiri.json",
|
||||
"category": "pending_packet",
|
||||
"front": "dasha",
|
||||
"bytes": 1214,
|
||||
"json_valid": true,
|
||||
"status": "draft",
|
||||
"case_id": "template_historical_epoch_lahiri",
|
||||
"capture_id": "external_template_historical_epoch_lahiri",
|
||||
"source_artifact": "references/oracle/artifacts/",
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "mean",
|
||||
"target_placeholder_count": 2
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/artifacts/pending_packets/external_template_historical_epoch_lahiri_pyjhora_20260627.json",
|
||||
"name": "external_template_historical_epoch_lahiri_pyjhora_20260627.json",
|
||||
"category": "pending_packet",
|
||||
"front": "dasha",
|
||||
"bytes": 1552,
|
||||
"json_valid": true,
|
||||
"status": "external_verified",
|
||||
"case_id": "template_historical_epoch_lahiri",
|
||||
"capture_id": "external_template_historical_epoch_lahiri",
|
||||
"source_artifact": "references/oracle/artifacts/pyjhora_historical_epoch_dasha_stdout_20260627.txt",
|
||||
"tool_name": "PyJHora",
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "mean",
|
||||
"target_placeholder_count": 1
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/artifacts/pending_packets/external_template_marilyn_monroe_varshaphala_1962_lahiri.json",
|
||||
"name": "external_template_marilyn_monroe_varshaphala_1962_lahiri.json",
|
||||
"category": "pending_packet",
|
||||
"front": "tajika_sahams",
|
||||
"bytes": 1688,
|
||||
"json_valid": true,
|
||||
"status": "draft",
|
||||
"case_id": "template_marilyn_monroe_varshaphala_1962_lahiri",
|
||||
"capture_id": "external_template_marilyn_monroe_varshaphala_1962_lahiri",
|
||||
"source_artifact": "references/oracle/artifacts/",
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "true",
|
||||
"annual_system": "varshaphala",
|
||||
"target_year": 1962,
|
||||
"target_placeholder_count": 10
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/artifacts/pending_packets/external_template_steve_jobs_dasha_lahiri.json",
|
||||
"name": "external_template_steve_jobs_dasha_lahiri.json",
|
||||
"category": "pending_packet",
|
||||
"front": "dasha",
|
||||
"bytes": 2570,
|
||||
"json_valid": true,
|
||||
"status": "draft",
|
||||
"case_id": "template_steve_jobs_dasha_lahiri",
|
||||
"capture_id": "external_template_steve_jobs_dasha_lahiri",
|
||||
"source_artifact": "references/oracle/artifacts/",
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "true",
|
||||
"target_placeholder_count": 2
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/artifacts/pending_packets/external_template_steve_jobs_dasha_lahiri_pyjhora_20260627.json",
|
||||
"name": "external_template_steve_jobs_dasha_lahiri_pyjhora_20260627.json",
|
||||
"category": "pending_packet",
|
||||
"front": "dasha",
|
||||
"bytes": 1549,
|
||||
"json_valid": true,
|
||||
"status": "external_verified",
|
||||
"case_id": "template_steve_jobs_dasha_lahiri",
|
||||
"capture_id": "external_template_steve_jobs_dasha_lahiri",
|
||||
"source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_dasha_stdout_20260627.txt",
|
||||
"tool_name": "PyJHora",
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "true",
|
||||
"target_placeholder_count": 1
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/artifacts/pending_packets/external_template_steve_jobs_shadbala_lahiri_pyjhora_20260627.json",
|
||||
"name": "external_template_steve_jobs_shadbala_lahiri_pyjhora_20260627.json",
|
||||
"category": "pending_packet",
|
||||
"front": "shadbala",
|
||||
"bytes": 3036,
|
||||
"json_valid": true,
|
||||
"status": "external_verified",
|
||||
"case_id": "template_steve_jobs_dasha_lahiri",
|
||||
"capture_id": "external_template_steve_jobs_dasha_lahiri",
|
||||
"source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt",
|
||||
"tool_name": "PyJHora",
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "true",
|
||||
"target_placeholder_count": 2
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/artifacts/pending_packets/external_template_steve_jobs_varshaphala_1984_lahiri.json",
|
||||
"name": "external_template_steve_jobs_varshaphala_1984_lahiri.json",
|
||||
"category": "pending_packet",
|
||||
"front": "tajika_sahams",
|
||||
"bytes": 3249,
|
||||
"json_valid": true,
|
||||
"status": "external_verified",
|
||||
"case_id": "template_steve_jobs_varshaphala_1984_lahiri",
|
||||
"capture_id": "external_template_steve_jobs_varshaphala_1984_lahiri",
|
||||
"source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_varshaphala_1984_lahiri_stdout_20260627.txt",
|
||||
"tool_name": "PyJHora",
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "true",
|
||||
"annual_system": "varshaphala",
|
||||
"target_year": 1984,
|
||||
"target_placeholder_count": 10
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/artifacts/pending_packets/external_template_steve_jobs_varshaphala_1984_lahiri_pyjhora_20260627.json",
|
||||
"name": "external_template_steve_jobs_varshaphala_1984_lahiri_pyjhora_20260627.json",
|
||||
"category": "pending_packet",
|
||||
"front": "tajika_sahams",
|
||||
"bytes": 3249,
|
||||
"json_valid": true,
|
||||
"status": "external_verified",
|
||||
"case_id": "template_steve_jobs_varshaphala_1984_lahiri",
|
||||
"capture_id": "external_template_steve_jobs_varshaphala_1984_lahiri",
|
||||
"source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_varshaphala_1984_lahiri_stdout_20260627.txt",
|
||||
"tool_name": "PyJHora",
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "true",
|
||||
"annual_system": "varshaphala",
|
||||
"target_year": 1984,
|
||||
"target_placeholder_count": 10
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/artifacts/pending_packets/external_template_synthetic_extreme_latitude_varshaphala_kp.json",
|
||||
"name": "external_template_synthetic_extreme_latitude_varshaphala_kp.json",
|
||||
"category": "pending_packet",
|
||||
"front": "tajika_sahams",
|
||||
"bytes": 1676,
|
||||
"json_valid": true,
|
||||
"status": "draft",
|
||||
"case_id": "template_synthetic_extreme_latitude_varshaphala_kp",
|
||||
"capture_id": "external_template_synthetic_extreme_latitude_varshaphala_kp",
|
||||
"source_artifact": "references/oracle/artifacts/",
|
||||
"ayanamsa": "kp",
|
||||
"node_mode": "true",
|
||||
"annual_system": "varshaphala",
|
||||
"target_year": 2024,
|
||||
"target_placeholder_count": 10
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/artifacts/pending_packets/external_template_user_REDACTED_YEAR_moon_longitude_lahiri.json",
|
||||
"name": "external_template_user_REDACTED_YEAR_moon_longitude_lahiri.json",
|
||||
"category": "pending_packet",
|
||||
"front": "shadbala",
|
||||
"bytes": 2631,
|
||||
"json_valid": true,
|
||||
"status": "draft",
|
||||
"case_id": "template_user_REDACTED_YEAR_moon_longitude_lahiri",
|
||||
"capture_id": "external_template_user_REDACTED_YEAR_moon_longitude_lahiri",
|
||||
"source_artifact": "references/oracle/artifacts/",
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "mean",
|
||||
"target_placeholder_count": 3
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/artifacts/pending_packets/external_template_user_REDACTED_YEAR_moon_longitude_lahiri_pyjhora_20260627.json",
|
||||
"name": "external_template_user_REDACTED_YEAR_moon_longitude_lahiri_pyjhora_20260627.json",
|
||||
"category": "pending_packet",
|
||||
"front": "shadbala",
|
||||
"bytes": 1562,
|
||||
"json_valid": true,
|
||||
"status": "external_verified",
|
||||
"case_id": "template_user_REDACTED_YEAR_moon_longitude_lahiri",
|
||||
"capture_id": "external_template_user_REDACTED_YEAR_moon_longitude_lahiri",
|
||||
"source_artifact": "references/oracle/artifacts/pyjhora_user_REDACTED_YEAR_dasha_stdout_20260627.txt",
|
||||
"tool_name": "PyJHora",
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "mean",
|
||||
"target_placeholder_count": 1
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/artifacts/pending_packets/external_template_user_REDACTED_YEAR_shadbala_lahiri_pyjhora_20260627.json",
|
||||
"name": "external_template_user_REDACTED_YEAR_shadbala_lahiri_pyjhora_20260627.json",
|
||||
"category": "pending_packet",
|
||||
"front": "shadbala",
|
||||
"bytes": 3275,
|
||||
"json_valid": true,
|
||||
"status": "external_verified",
|
||||
"case_id": "template_user_REDACTED_YEAR_moon_longitude_lahiri",
|
||||
"capture_id": "external_template_user_REDACTED_YEAR_moon_longitude_lahiri",
|
||||
"source_artifact": "references/oracle/artifacts/pyjhora_user_REDACTED_YEAR_shadbala_lahiri_stdout_20260627.txt",
|
||||
"tool_name": "PyJHora",
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "mean",
|
||||
"target_placeholder_count": 3
|
||||
}
|
||||
],
|
||||
"pyjhora_artifacts": [
|
||||
{
|
||||
"path": "references/oracle/artifacts/pyjhora_extreme_latitude_kp_shadbala_stdout_20260627.txt",
|
||||
"name": "pyjhora_extreme_latitude_kp_shadbala_stdout_20260627.txt",
|
||||
"category": "pyjhora_artifact",
|
||||
"front": "shadbala",
|
||||
"bytes": 2973
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/artifacts/pyjhora_redacted_place_shadbala_raman_stdout_20260627.txt",
|
||||
"name": "pyjhora_redacted_place_shadbala_raman_stdout_20260627.txt",
|
||||
"category": "pyjhora_artifact",
|
||||
"front": "shadbala",
|
||||
"bytes": 2994
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/artifacts/pyjhora_historical_epoch_dasha_stdout_20260627.txt",
|
||||
"name": "pyjhora_historical_epoch_dasha_stdout_20260627.txt",
|
||||
"category": "pyjhora_artifact",
|
||||
"front": "dasha",
|
||||
"bytes": 6188
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/artifacts/pyjhora_steve_jobs_dasha_stdout_20260627.txt",
|
||||
"name": "pyjhora_steve_jobs_dasha_stdout_20260627.txt",
|
||||
"category": "pyjhora_artifact",
|
||||
"front": "dasha",
|
||||
"bytes": 5765
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt",
|
||||
"name": "pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt",
|
||||
"category": "pyjhora_artifact",
|
||||
"front": "shadbala",
|
||||
"bytes": 2980
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/artifacts/pyjhora_steve_jobs_varshaphala_1984_lahiri_stdout_20260627.txt",
|
||||
"name": "pyjhora_steve_jobs_varshaphala_1984_lahiri_stdout_20260627.txt",
|
||||
"category": "pyjhora_artifact",
|
||||
"front": "tajika_sahams",
|
||||
"bytes": 3491
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/artifacts/pyjhora_user_REDACTED_YEAR_dasha_stdout_20260627.txt",
|
||||
"name": "pyjhora_user_REDACTED_YEAR_dasha_stdout_20260627.txt",
|
||||
"category": "pyjhora_artifact",
|
||||
"front": "dasha",
|
||||
"bytes": 6224
|
||||
},
|
||||
{
|
||||
"path": "references/oracle/artifacts/pyjhora_user_REDACTED_YEAR_shadbala_lahiri_stdout_20260627.txt",
|
||||
"name": "pyjhora_user_REDACTED_YEAR_shadbala_lahiri_stdout_20260627.txt",
|
||||
"category": "pyjhora_artifact",
|
||||
"front": "shadbala",
|
||||
"bytes": 3018
|
||||
}
|
||||
],
|
||||
"pyjhora_manifest": {
|
||||
"path": "references/oracle/artifacts/pyjhora_oracle_artifact_manifest.json",
|
||||
"name": "pyjhora_oracle_artifact_manifest.json",
|
||||
"category": "pyjhora_manifest",
|
||||
"front": "general",
|
||||
"bytes": 3239,
|
||||
"json_valid": true,
|
||||
"scope": "pyjhora_oracle_artifact_manifest",
|
||||
"artifact_count": 8,
|
||||
"packet_count": 8
|
||||
},
|
||||
"dashboards": [
|
||||
{
|
||||
"path": "docs/research/oracle_closure_master_dashboard_latest.md",
|
||||
"name": "oracle_closure_master_dashboard_latest.md",
|
||||
"category": "dashboard",
|
||||
"front": "general",
|
||||
"bytes": 1322
|
||||
},
|
||||
{
|
||||
"path": "docs/research/public_benchmark_dashboard_latest.md",
|
||||
"name": "public_benchmark_dashboard_latest.md",
|
||||
"category": "dashboard",
|
||||
"front": "general",
|
||||
"bytes": 1578
|
||||
},
|
||||
{
|
||||
"path": "docs/research/tajika_annual_benchmark_dashboard_latest.md",
|
||||
"name": "tajika_annual_benchmark_dashboard_latest.md",
|
||||
"category": "dashboard",
|
||||
"front": "tajika_sahams",
|
||||
"bytes": 1053
|
||||
},
|
||||
{
|
||||
"path": "docs/research/tajika_annual_closure_status_latest.md",
|
||||
"name": "tajika_annual_closure_status_latest.md",
|
||||
"category": "dashboard",
|
||||
"front": "tajika_sahams",
|
||||
"bytes": 2789
|
||||
}
|
||||
]
|
||||
},
|
||||
"boundary": "This inventory tracks external oracle evidence only. It does not import PyJHora/JHora implementation code, does not tune production constants, and does not treat internal consistency as external validation.",
|
||||
"next_actions": [
|
||||
"Promote verified pending packets into the relevant oracle registry only after metadata and source_artifact pass validation.",
|
||||
"Keep PyJHora outputs as black-box artifacts and regenerate the artifact manifest after each external capture batch.",
|
||||
"Update public_benchmark_dashboard_latest.md after each validated packet batch so public claims stay conservative.",
|
||||
"Use this inventory before changing strict workflow or adjudicator logic that depends on external truth."
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
# Oracle Benchmark Single-Truth Inventory
|
||||
|
||||
Generated: `2026-06-28T07:20:42.378403+00:00`
|
||||
|
||||
## Summary
|
||||
|
||||
- oracle_registry_count: `3`
|
||||
- oracle_case_count: `9`
|
||||
- evidence_template_count: `4`
|
||||
- pending_packet_count: `19`
|
||||
- pending_pyjhora_packet_count: `8`
|
||||
- pending_non_pyjhora_packet_count: `11`
|
||||
- pyjhora_artifact_count: `8`
|
||||
- dashboard_count: `4`
|
||||
|
||||
## Oracle Registries
|
||||
|
||||
- `references/oracle/ashtakoot_oracle_cases.json` (ashtakoot)
|
||||
- `references/oracle/dasha_shadbala_oracle_cases.json` (shadbala)
|
||||
- `references/oracle/tajika_annual_oracle_cases.json` (tajika_sahams)
|
||||
|
||||
## Oracle Case Files
|
||||
|
||||
- `references/oracle/cases/albert_einstein.json` (general)
|
||||
- `references/oracle/cases/elon_musk.json` (general)
|
||||
- `references/oracle/cases/equator_quito.json` (general)
|
||||
- `references/oracle/cases/historical_dst_london_1943.json` (general)
|
||||
- `references/oracle/cases/katy_perry.json` (general)
|
||||
- `references/oracle/cases/marilyn_monroe.json` (general)
|
||||
- `references/oracle/cases/polar_reykjavik.json` (general)
|
||||
- `references/oracle/cases/steve_jobs.json` (general)
|
||||
- `references/oracle/cases/yinan_video_truth_2026_06_28.json` (general)
|
||||
|
||||
## Pending Evidence Packets
|
||||
|
||||
- `references/oracle/artifacts/pending_packets/capture_manifest.json` (general, status: `unknown`, case: `capture_manifest.json`)
|
||||
- `references/oracle/artifacts/pending_packets/external_template_einstein_varshaphala_1905_lahiri.json` (tajika_sahams, status: `draft`, case: `template_einstein_varshaphala_1905_lahiri`)
|
||||
- `references/oracle/artifacts/pending_packets/external_template_extreme_latitude_kp.json` (general, status: `draft`, case: `template_extreme_latitude_kp`)
|
||||
- `references/oracle/artifacts/pending_packets/external_template_extreme_latitude_kp_pyjhora_20260627.json` (general, status: `external_verified`, case: `template_extreme_latitude_kp`)
|
||||
- `references/oracle/artifacts/pending_packets/external_template_redacted_place_shadbala_raman.json` (shadbala, status: `draft`, case: `template_redacted_place_shadbala_raman`)
|
||||
- `references/oracle/artifacts/pending_packets/external_template_redacted_place_shadbala_raman_pyjhora_20260627.json` (shadbala, status: `external_verified`, case: `template_redacted_place_shadbala_raman`)
|
||||
- `references/oracle/artifacts/pending_packets/external_template_historical_dst_london_varshaphala_1943_lahiri.json` (tajika_sahams, status: `draft`, case: `template_historical_dst_london_varshaphala_1943_lahiri`)
|
||||
- `references/oracle/artifacts/pending_packets/external_template_historical_epoch_lahiri.json` (dasha, status: `draft`, case: `template_historical_epoch_lahiri`)
|
||||
- `references/oracle/artifacts/pending_packets/external_template_historical_epoch_lahiri_pyjhora_20260627.json` (dasha, status: `external_verified`, case: `template_historical_epoch_lahiri`)
|
||||
- `references/oracle/artifacts/pending_packets/external_template_marilyn_monroe_varshaphala_1962_lahiri.json` (tajika_sahams, status: `draft`, case: `template_marilyn_monroe_varshaphala_1962_lahiri`)
|
||||
- `references/oracle/artifacts/pending_packets/external_template_steve_jobs_dasha_lahiri.json` (dasha, status: `draft`, case: `template_steve_jobs_dasha_lahiri`)
|
||||
- `references/oracle/artifacts/pending_packets/external_template_steve_jobs_dasha_lahiri_pyjhora_20260627.json` (dasha, status: `external_verified`, case: `template_steve_jobs_dasha_lahiri`)
|
||||
- `references/oracle/artifacts/pending_packets/external_template_steve_jobs_shadbala_lahiri_pyjhora_20260627.json` (shadbala, status: `external_verified`, case: `template_steve_jobs_dasha_lahiri`)
|
||||
- `references/oracle/artifacts/pending_packets/external_template_steve_jobs_varshaphala_1984_lahiri.json` (tajika_sahams, status: `external_verified`, case: `template_steve_jobs_varshaphala_1984_lahiri`)
|
||||
- `references/oracle/artifacts/pending_packets/external_template_steve_jobs_varshaphala_1984_lahiri_pyjhora_20260627.json` (tajika_sahams, status: `external_verified`, case: `template_steve_jobs_varshaphala_1984_lahiri`)
|
||||
- `references/oracle/artifacts/pending_packets/external_template_synthetic_extreme_latitude_varshaphala_kp.json` (tajika_sahams, status: `draft`, case: `template_synthetic_extreme_latitude_varshaphala_kp`)
|
||||
- `references/oracle/artifacts/pending_packets/external_template_user_REDACTED_YEAR_moon_longitude_lahiri.json` (shadbala, status: `draft`, case: `template_user_REDACTED_YEAR_moon_longitude_lahiri`)
|
||||
- `references/oracle/artifacts/pending_packets/external_template_user_REDACTED_YEAR_moon_longitude_lahiri_pyjhora_20260627.json` (shadbala, status: `external_verified`, case: `template_user_REDACTED_YEAR_moon_longitude_lahiri`)
|
||||
- `references/oracle/artifacts/pending_packets/external_template_user_REDACTED_YEAR_shadbala_lahiri_pyjhora_20260627.json` (shadbala, status: `external_verified`, case: `template_user_REDACTED_YEAR_moon_longitude_lahiri`)
|
||||
|
||||
## PyJHora Black-Box Assets
|
||||
|
||||
- `references/oracle/artifacts/pyjhora_extreme_latitude_kp_shadbala_stdout_20260627.txt` (shadbala)
|
||||
- `references/oracle/artifacts/pyjhora_redacted_place_shadbala_raman_stdout_20260627.txt` (shadbala)
|
||||
- `references/oracle/artifacts/pyjhora_historical_epoch_dasha_stdout_20260627.txt` (dasha)
|
||||
- `references/oracle/artifacts/pyjhora_steve_jobs_dasha_stdout_20260627.txt` (dasha)
|
||||
- `references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt` (shadbala)
|
||||
- `references/oracle/artifacts/pyjhora_steve_jobs_varshaphala_1984_lahiri_stdout_20260627.txt` (tajika_sahams)
|
||||
- `references/oracle/artifacts/pyjhora_user_REDACTED_YEAR_dasha_stdout_20260627.txt` (dasha)
|
||||
- `references/oracle/artifacts/pyjhora_user_REDACTED_YEAR_shadbala_lahiri_stdout_20260627.txt` (shadbala)
|
||||
|
||||
Manifest: `references/oracle/artifacts/pyjhora_oracle_artifact_manifest.json`
|
||||
|
||||
## Dashboards
|
||||
|
||||
- `docs/research/oracle_closure_master_dashboard_latest.md`
|
||||
- `docs/research/public_benchmark_dashboard_latest.md`
|
||||
- `docs/research/tajika_annual_benchmark_dashboard_latest.md`
|
||||
- `docs/research/tajika_annual_closure_status_latest.md`
|
||||
|
||||
## Boundary
|
||||
|
||||
This inventory tracks external oracle evidence only. It does not import PyJHora/JHora implementation code, does not tune production constants, and does not treat internal consistency as external validation.
|
||||
|
||||
## Next Actions
|
||||
|
||||
- Promote verified pending packets into the relevant oracle registry only after metadata and source_artifact pass validation.
|
||||
- Keep PyJHora outputs as black-box artifacts and regenerate the artifact manifest after each external capture batch.
|
||||
- Update public_benchmark_dashboard_latest.md after each validated packet batch so public claims stay conservative.
|
||||
- Use this inventory before changing strict workflow or adjudicator logic that depends on external truth.
|
||||
@@ -1,10 +1,10 @@
|
||||
# Public Jyotish Benchmark Dashboard
|
||||
|
||||
Generated: `2026-06-26T18:30:41.336555+00:00`
|
||||
Generated: `2026-06-28T07:20:42.239186+00:00`
|
||||
|
||||
## Capability Registry
|
||||
|
||||
- technique_count: `79`
|
||||
- technique_count: `89`
|
||||
- capability_valid: `true`
|
||||
- problem_count: `0`
|
||||
|
||||
@@ -19,6 +19,14 @@ Generated: `2026-06-26T18:30:41.336555+00:00`
|
||||
- external_verified_shadbala_tasks: `4`
|
||||
- shadbala_task_count: `4`
|
||||
|
||||
## PyJHora Black-Box Assets
|
||||
|
||||
- artifact_count: `8`
|
||||
- packet_count: `8`
|
||||
- dasha_artifacts: `3`
|
||||
- shadbala_artifacts: `4`
|
||||
- tajika_sahams_artifacts: `1`
|
||||
|
||||
## Boundary Audit
|
||||
|
||||
- external_verified_template_cases: `4`
|
||||
@@ -32,7 +40,7 @@ Generated: `2026-06-26T18:30:41.336555+00:00`
|
||||
|
||||
## Remaining Gap
|
||||
|
||||
Dasha-only external oracle readiness is 3/3; Shadbala external absolute-value readiness is 4/4; public long-term benchmark history is not yet comparable to the strongest global open-source projects.
|
||||
Dasha-only external oracle readiness is 3/3; Shadbala external absolute-value readiness is 4/4; PyJHora black-box assets are 8 artifacts / 8 packets; public long-term benchmark history is not yet comparable to the strongest global open-source projects.
|
||||
|
||||
## Next Actions
|
||||
|
||||
|
||||
@@ -2117,6 +2117,7 @@ const VALIDATION_TRANSPARENCY = {
|
||||
recall: 'Recall 93.99%',
|
||||
f1: 'F1 95.22%',
|
||||
unmappedPyjhora: 'unmapped_pyjhora: 718',
|
||||
unmappedExternalBenchmark: 'unmapped_external_benchmark: tracked',
|
||||
gates: ['golden cases', 'BPHS invariants', 'release-quality-gate'],
|
||||
};
|
||||
|
||||
@@ -2132,6 +2133,7 @@ function renderValidationTransparencyPanel() {
|
||||
${renderValidationTransparencyMetric('Recall', VALIDATION_TRANSPARENCY.recall, '参考可比较规则中,被当前引擎找回的比例。')}
|
||||
${renderValidationTransparencyMetric('F1', VALIDATION_TRANSPARENCY.f1, 'Precision 与 Recall 的综合分。')}
|
||||
${renderValidationTransparencyMetric('Coverage gap', VALIDATION_TRANSPARENCY.unmappedPyjhora, '仍未映射的 PyJHora/B.V. Raman 规则保持可见。')}
|
||||
${renderValidationTransparencyMetric('External gap', VALIDATION_TRANSPARENCY.unmappedExternalBenchmark, '外部 benchmark 缺口保持可见,但不得等同个人事件预测准确率。')}
|
||||
</div>
|
||||
<div class="validation-transparency-boundary">
|
||||
<strong>边界</strong>
|
||||
|
||||
+10
@@ -395,3 +395,13 @@
|
||||
- 完成“有效文件复用索引”:新增 `docs/research/local_reuse_candidate_index_round28_2026_06_26.md`,把当前 repo、旧 WorkBuddy skill、历史 benchmark、本地开源镜像按 `direct current repo reuse`、`older WorkBuddy skill reuse`、`local open-source mirrors`、`benchmark-only sources` 分类,明确未来补 Kuja/Panchanga/Tajika/Chara/Prompt Pack 时必须先查已有文件和许可证边界,再决定是否新写。
|
||||
- 2026-06-26:新增 `docs/research/antigravity_sidecar_work_order_round29_2026_06_26.md`,继续扩大副手任务规模,集中拆 skill 全量补齐、本地可直接测试、云端同步白名单、外部 oracle 精度闭环与 `Round30 Top120`。
|
||||
- 2026-06-26:当前待正式归档并推云的核心资产为 `docs/research/antigravity_round28_*_2026_06_26.md` 与 `docs/research/antigravity_sidecar_work_order_round29_2026_06_26.md`;归档完成后主线程继续优先补高 ROI 的 API/CLI/前端隐藏技法,而不是重新空写算法。
|
||||
|
||||
## 2026-06-28 Oracle/Benchmark 收口
|
||||
|
||||
- 按用户要求继续完成未完成任务前,重新读取 `task_plan.md`、`findings.md`、`progress.md` 与 `docs/research/ACTIVE_FRONTS.md`,确认当前高价值遗漏集中在外部 oracle/PyJHora 黑盒证据包、pending packets、benchmark dashboard 与 Shadbala 组件边界。
|
||||
- 先写红灯测试 `tests/test_oracle_benchmark_inventory.py`,要求项目能机器化索引 oracle registries、oracle cases、pending packets、PyJHora artifacts、manifest 与 dashboards。
|
||||
- 新增 `scripts/oracle_benchmark_inventory.py`,生成 `oracle_benchmark_single_truth_inventory`,把 `references/oracle/`、`references/oracle/cases/`、`references/oracle/artifacts/pending_packets/` 与 dashboard 文件折叠成单一 JSON/Markdown 真相入口。
|
||||
- 生成 `docs/research/oracle_benchmark_inventory_latest.json` 与 `docs/research/oracle_benchmark_inventory_latest.md`,当前索引统计为 3 个 oracle registry、9 个 oracle case、19 个 pending packet、8 个 PyJHora 黑盒 artifact、4 个 dashboard。
|
||||
- 更新 `docs/research/ACTIVE_FRONTS.md` 的 Oracle Closure 入口,要求后续修改 oracle-dependent adjudicator 或 benchmark claims 前先运行 `python3 scripts/oracle_benchmark_inventory.py --format json`。
|
||||
- 收口上一轮遗留的 finance Shadbala 组件审计:`mcp_server.py` 对 `shadbala.planets` 要求 `sthana/dig/kala/chesta/naisargika/drik` 六分量,缺失时 `confidence_cap = low` 且进入 `secondary_context += ["shadbala_component_gap"]`;补文档 `docs/research/shadbala_component_confidence_cap_v1_2026_06_28.md`。
|
||||
- 验证:`python3 -m pytest tests/test_oracle_benchmark_inventory.py -q` 通过;`python3 -m pytest tests/test_mcp_strict_workflow_finance.py -q` 24 项通过;`python3 -m json.tool docs/research/oracle_benchmark_inventory_latest.json` 通过。
|
||||
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
{
|
||||
"capture_id": "external_template_historical_dst_london_varshaphala_1943_lahiri",
|
||||
"status": "draft",
|
||||
"case_id": "template_historical_dst_london_varshaphala_1943_lahiri",
|
||||
"birth": {
|
||||
"year": 1910,
|
||||
"month": 4,
|
||||
"day": 15,
|
||||
"hour": 12,
|
||||
"minute": 0,
|
||||
"second": 0,
|
||||
"lat": 51.5074,
|
||||
"lon": -0.1278,
|
||||
"tz": 0
|
||||
},
|
||||
"settings": {
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "mean",
|
||||
"annual_system": "varshaphala",
|
||||
"target_year": 1943
|
||||
},
|
||||
"required_metadata_fields": [
|
||||
"tool_name",
|
||||
"tool_version_or_url",
|
||||
"capture_date",
|
||||
"source_artifact",
|
||||
"ayanamsa",
|
||||
"node_mode",
|
||||
"timezone",
|
||||
"annual_system",
|
||||
"target_year",
|
||||
"operator_note"
|
||||
],
|
||||
"metadata": {
|
||||
"tool_name": "",
|
||||
"tool_version_or_url": "",
|
||||
"capture_date": "",
|
||||
"source_artifact": "references/oracle/artifacts/",
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "mean",
|
||||
"timezone": 0,
|
||||
"annual_system": "varshaphala",
|
||||
"target_year": 1943,
|
||||
"operator_note": ""
|
||||
},
|
||||
"target_placeholders": {
|
||||
"target.solar_return_datetime": null,
|
||||
"target.varsha_lagna_deg": null,
|
||||
"target.muntha_sign": null,
|
||||
"target.year_lord": null,
|
||||
"target.mudda_dasha_first_lord": null,
|
||||
"target.sahams.punya_saham": null,
|
||||
"target.sahams.rajya_saham": null,
|
||||
"target.sahams.vivah_saham": null,
|
||||
"target.tajika_yogas": null,
|
||||
"target.source_artifact": null
|
||||
},
|
||||
"integrity_checks": {
|
||||
"must_not_come_from_local_engine": true,
|
||||
"requires_external_artifact": true,
|
||||
"requires_status_external_verified_before_calibration": true,
|
||||
"requires_solar_return_convention": true
|
||||
},
|
||||
"promotion_status_after_fill": "external_verified"
|
||||
}
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
{
|
||||
"capture_id": "external_template_marilyn_monroe_varshaphala_1962_lahiri",
|
||||
"status": "draft",
|
||||
"case_id": "template_marilyn_monroe_varshaphala_1962_lahiri",
|
||||
"birth": {
|
||||
"year": 1926,
|
||||
"month": 6,
|
||||
"day": 1,
|
||||
"hour": 9,
|
||||
"minute": 30,
|
||||
"second": 0,
|
||||
"lat": 34.0522,
|
||||
"lon": -118.2437,
|
||||
"tz": -8
|
||||
},
|
||||
"settings": {
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "true",
|
||||
"annual_system": "varshaphala",
|
||||
"target_year": 1962
|
||||
},
|
||||
"required_metadata_fields": [
|
||||
"tool_name",
|
||||
"tool_version_or_url",
|
||||
"capture_date",
|
||||
"source_artifact",
|
||||
"ayanamsa",
|
||||
"node_mode",
|
||||
"timezone",
|
||||
"annual_system",
|
||||
"target_year",
|
||||
"operator_note"
|
||||
],
|
||||
"metadata": {
|
||||
"tool_name": "",
|
||||
"tool_version_or_url": "",
|
||||
"capture_date": "",
|
||||
"source_artifact": "references/oracle/artifacts/",
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "true",
|
||||
"timezone": -8,
|
||||
"annual_system": "varshaphala",
|
||||
"target_year": 1962,
|
||||
"operator_note": ""
|
||||
},
|
||||
"target_placeholders": {
|
||||
"target.solar_return_datetime": null,
|
||||
"target.varsha_lagna_deg": null,
|
||||
"target.muntha_sign": null,
|
||||
"target.year_lord": null,
|
||||
"target.mudda_dasha_first_lord": null,
|
||||
"target.sahams.punya_saham": null,
|
||||
"target.sahams.rajya_saham": null,
|
||||
"target.sahams.vivah_saham": null,
|
||||
"target.tajika_yogas": null,
|
||||
"target.source_artifact": null
|
||||
},
|
||||
"integrity_checks": {
|
||||
"must_not_come_from_local_engine": true,
|
||||
"requires_external_artifact": true,
|
||||
"requires_status_external_verified_before_calibration": true,
|
||||
"requires_solar_return_convention": true
|
||||
},
|
||||
"promotion_status_after_fill": "external_verified"
|
||||
}
|
||||
+139
@@ -0,0 +1,139 @@
|
||||
{
|
||||
"capture_id": "external_template_steve_jobs_varshaphala_1984_lahiri",
|
||||
"status": "external_verified",
|
||||
"case_id": "template_steve_jobs_varshaphala_1984_lahiri",
|
||||
"birth": {
|
||||
"year": 1955,
|
||||
"month": 2,
|
||||
"day": 24,
|
||||
"hour": 19,
|
||||
"minute": 15,
|
||||
"second": 0,
|
||||
"lat": 37.7749,
|
||||
"lon": -122.4194,
|
||||
"tz": -8
|
||||
},
|
||||
"settings": {
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "true",
|
||||
"annual_system": "varshaphala",
|
||||
"target_year": 1984
|
||||
},
|
||||
"required_metadata_fields": [
|
||||
"tool_name",
|
||||
"tool_version_or_url",
|
||||
"capture_date",
|
||||
"source_artifact",
|
||||
"ayanamsa",
|
||||
"node_mode",
|
||||
"timezone",
|
||||
"annual_system",
|
||||
"target_year",
|
||||
"operator_note"
|
||||
],
|
||||
"metadata": {
|
||||
"tool_name": "PyJHora",
|
||||
"tool_version_or_url": "PyJHora 4.8.7 isolated /tmp black-box run",
|
||||
"capture_date": "2026-06-27",
|
||||
"source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_varshaphala_1984_lahiri_stdout_20260627.txt",
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "PyJHora default",
|
||||
"timezone": "UTC-08:00",
|
||||
"annual_system": "Varshaphala/Tajika",
|
||||
"target_year": 1984,
|
||||
"operator_note": "Black-box annual output from isolated /tmp virtualenv. PyJHora AGPL code was not copied into this repository; only generated output is stored as external evidence. Year Lord direct call raised KeyError when Rahu appeared in candidates; packet records the filtered classical-planet workaround per PyJHora docstring boundary."
|
||||
},
|
||||
"target_placeholders": {
|
||||
"target.solar_return_datetime": "1984-02-25T05:41:37-08:00",
|
||||
"target.varsha_lagna_deg": 287.4007,
|
||||
"target.muntha_sign": "Cancer",
|
||||
"target.year_lord": "Mars",
|
||||
"target.mudda_dasha_first_lord": "Sun",
|
||||
"target.sahams.punya_saham": 249.1148,
|
||||
"target.sahams.rajya_saham": 207.6343,
|
||||
"target.sahams.vivah_saham": 8.8762,
|
||||
"target.tajika_yogas": {
|
||||
"eesarpha": [
|
||||
[
|
||||
0,
|
||||
5
|
||||
],
|
||||
[
|
||||
1,
|
||||
3
|
||||
],
|
||||
[
|
||||
2,
|
||||
6
|
||||
],
|
||||
[
|
||||
4,
|
||||
5
|
||||
]
|
||||
],
|
||||
"gairi_kamboola": null,
|
||||
"ithasala": [
|
||||
[
|
||||
0,
|
||||
1,
|
||||
1
|
||||
],
|
||||
[
|
||||
0,
|
||||
4,
|
||||
2
|
||||
],
|
||||
[
|
||||
1,
|
||||
4,
|
||||
3
|
||||
]
|
||||
],
|
||||
"kamboola": [
|
||||
true,
|
||||
[
|
||||
[
|
||||
1,
|
||||
4
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0,
|
||||
4
|
||||
],
|
||||
[
|
||||
1,
|
||||
4
|
||||
],
|
||||
[
|
||||
0,
|
||||
1
|
||||
],
|
||||
[
|
||||
0,
|
||||
4
|
||||
]
|
||||
]
|
||||
],
|
||||
"khallasara": null,
|
||||
"manahoo": [
|
||||
[
|
||||
0,
|
||||
4,
|
||||
10
|
||||
]
|
||||
],
|
||||
"nakta": [],
|
||||
"yamaya": []
|
||||
},
|
||||
"target.source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_varshaphala_1984_lahiri_stdout_20260627.txt"
|
||||
},
|
||||
"integrity_checks": {
|
||||
"must_not_come_from_local_engine": true,
|
||||
"requires_external_artifact": true,
|
||||
"requires_status_external_verified_before_calibration": true,
|
||||
"requires_solar_return_convention": true
|
||||
},
|
||||
"promotion_status_after_fill": "external_verified"
|
||||
}
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
{
|
||||
"capture_id": "external_template_synthetic_extreme_latitude_varshaphala_kp",
|
||||
"status": "draft",
|
||||
"case_id": "template_synthetic_extreme_latitude_varshaphala_kp",
|
||||
"birth": {
|
||||
"year": 2000,
|
||||
"month": 6,
|
||||
"day": 21,
|
||||
"hour": 0,
|
||||
"minute": 0,
|
||||
"second": 0,
|
||||
"lat": 65.0,
|
||||
"lon": 15.0,
|
||||
"tz": 1
|
||||
},
|
||||
"settings": {
|
||||
"ayanamsa": "kp",
|
||||
"node_mode": "true",
|
||||
"annual_system": "varshaphala",
|
||||
"target_year": 2024
|
||||
},
|
||||
"required_metadata_fields": [
|
||||
"tool_name",
|
||||
"tool_version_or_url",
|
||||
"capture_date",
|
||||
"source_artifact",
|
||||
"ayanamsa",
|
||||
"node_mode",
|
||||
"timezone",
|
||||
"annual_system",
|
||||
"target_year",
|
||||
"operator_note"
|
||||
],
|
||||
"metadata": {
|
||||
"tool_name": "",
|
||||
"tool_version_or_url": "",
|
||||
"capture_date": "",
|
||||
"source_artifact": "references/oracle/artifacts/",
|
||||
"ayanamsa": "kp",
|
||||
"node_mode": "true",
|
||||
"timezone": 1,
|
||||
"annual_system": "varshaphala",
|
||||
"target_year": 2024,
|
||||
"operator_note": ""
|
||||
},
|
||||
"target_placeholders": {
|
||||
"target.solar_return_datetime": null,
|
||||
"target.varsha_lagna_deg": null,
|
||||
"target.muntha_sign": null,
|
||||
"target.year_lord": null,
|
||||
"target.mudda_dasha_first_lord": null,
|
||||
"target.sahams.punya_saham": null,
|
||||
"target.sahams.rajya_saham": null,
|
||||
"target.sahams.vivah_saham": null,
|
||||
"target.tajika_yogas": null,
|
||||
"target.source_artifact": null
|
||||
},
|
||||
"integrity_checks": {
|
||||
"must_not_come_from_local_engine": true,
|
||||
"requires_external_artifact": true,
|
||||
"requires_status_external_verified_before_calibration": true,
|
||||
"requires_solar_return_convention": true
|
||||
},
|
||||
"promotion_status_after_fill": "external_verified"
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"scope": "pyjhora_oracle_artifact_manifest",
|
||||
"generated_at": "2026-06-27T06:37:54.911742+00:00",
|
||||
"generated_at": "2026-06-28T07:23:17.173699+00:00",
|
||||
"artifact_count": 8,
|
||||
"packet_count": 8,
|
||||
"artifacts": [
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"lagna_degree_d1": null,
|
||||
"moon_nakshatra": null,
|
||||
"sun_shadbala": null,
|
||||
"sav_total": null
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"lagna_degree_d1": null,
|
||||
"moon_nakshatra": null,
|
||||
"sun_shadbala": null,
|
||||
"sav_total": null
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"lagna_degree_d1": null,
|
||||
"moon_nakshatra": null,
|
||||
"sun_shadbala": null,
|
||||
"sav_total": null
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"lagna_degree_d1": null,
|
||||
"moon_nakshatra": null,
|
||||
"sun_shadbala": null,
|
||||
"sav_total": null
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"lagna_degree_d1": null,
|
||||
"moon_nakshatra": null,
|
||||
"sun_shadbala": null,
|
||||
"sav_total": null
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"lagna_degree_d1": null,
|
||||
"moon_nakshatra": null,
|
||||
"sun_shadbala": null,
|
||||
"sav_total": null
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"lagna_degree_d1": null,
|
||||
"moon_nakshatra": null,
|
||||
"sun_shadbala": null,
|
||||
"sav_total": null
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"lagna_degree_d1": null,
|
||||
"moon_nakshatra": null,
|
||||
"sun_shadbala": null,
|
||||
"sav_total": null
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
{
|
||||
"profile": {
|
||||
"name": "一楠",
|
||||
"dob": "REDACTED_DATETREDACTED_TIME:00+08:00",
|
||||
"location": {
|
||||
"latitude": "REDACTED_LAT'02\"",
|
||||
"longitude": "REDACTED_LON'04\""
|
||||
}
|
||||
},
|
||||
"d1_rasi": {
|
||||
"lagna": "Leo",
|
||||
"Sun": {"sign": "Aries", "degree": "3° 30' 14\""},
|
||||
"Venus": {"sign": "Pisces", "degree": "10° 32' 23\""},
|
||||
"Mercury": {"sign": "Pisces", "degree": "08° 31' 42\""},
|
||||
"Mars": {"sign": "Cancer", "degree": "01° 18' 47\""},
|
||||
"Jupiter": {"sign": "Virgo", "degree": "13° 49' 07\""},
|
||||
"Saturn": {"sign": "Aquarius", "degree": "04° 17' 00\""},
|
||||
"Moon": {"sign": "Aquarius", "degree": "11° 48' 16\""},
|
||||
"Rahu": {"sign": "Scorpio", "degree": "21°"},
|
||||
"Ketu": {"sign": "Taurus", "degree": "21°"}
|
||||
},
|
||||
"dignities_panchadha_maitri": {
|
||||
"Sun": "Exaltation",
|
||||
"Venus": "Exaltation",
|
||||
"Saturn": "Mulatrikona",
|
||||
"Moon": "Enemy's Sign",
|
||||
"Jupiter": "Great Enemy's Sign",
|
||||
"Mercury": "Debilitation",
|
||||
"Mars": "Debilitation"
|
||||
},
|
||||
"d9_navamsha": {
|
||||
"lagna": "Aries",
|
||||
"Sun": "Pisces",
|
||||
"Moon": "Pisces",
|
||||
"Venus": "Libra",
|
||||
"Rahu": "Capricorn",
|
||||
"Mercury": "Virgo",
|
||||
"Jupiter": "Taurus",
|
||||
"Mars": "Aquarius",
|
||||
"Saturn": "Scorpio",
|
||||
"Ketu": "Cancer"
|
||||
},
|
||||
"d10_dashamsha": {
|
||||
"lagna": "Cancer",
|
||||
"Sun": "Pisces",
|
||||
"Moon": "Pisces",
|
||||
"Mars": "Aquarius",
|
||||
"Mercury": "Virgo",
|
||||
"Jupiter": "Taurus",
|
||||
"Venus": "Libra",
|
||||
"Saturn": "Scorpio",
|
||||
"Rahu": "Capricorn",
|
||||
"Ketu": "Cancer"
|
||||
},
|
||||
"d60_shashtiamsha": {
|
||||
"lagna": "Cancer",
|
||||
"Sun": "Scorpio",
|
||||
"Moon": "Aquarius",
|
||||
"Mars": "Virgo",
|
||||
"Mercury": "Leo",
|
||||
"Jupiter": "Sagittarius",
|
||||
"Venus": "Sagittarius",
|
||||
"Saturn": "Libra",
|
||||
"Rahu": "Taurus",
|
||||
"Ketu": "Scorpio"
|
||||
},
|
||||
"house_cusps": {
|
||||
"6": "12 Cp 07'00\"",
|
||||
"7": "13 Aq 19'56\"",
|
||||
"8": "13 Pi 01'04\"",
|
||||
"9": "11 Ar 33'27\"",
|
||||
"10": "10 Ta 21'16\"",
|
||||
"11": "10 Ge 35'53\"",
|
||||
"12": "12 Cn 07'00\""
|
||||
}
|
||||
}
|
||||
@@ -188,6 +188,10 @@ def first_token_path(value: str) -> str:
|
||||
def output_path_exists(path: str) -> tuple[bool, str]:
|
||||
if path.startswith("scripts/"):
|
||||
rel = first_token_path(path)
|
||||
if ":" in rel:
|
||||
rel = rel.split(":", 1)[0]
|
||||
elif ".py." in rel:
|
||||
rel = rel.split(".py.", 1)[0] + ".py"
|
||||
return (ROOT / rel).exists(), rel
|
||||
if path.endswith(".py"):
|
||||
return (ROOT / path).exists(), path
|
||||
|
||||
@@ -2925,7 +2925,7 @@ class JyotishAPIHandler(BaseHTTPRequestHandler):
|
||||
day = self._get_int(body, 'day', 1, 1, 31)
|
||||
lat = self._get_float(body, 'lat', body.get('birth_lat', 0), -90, 90)
|
||||
lon = self._get_float(body, 'lon', body.get('birth_lon', 0), -180, 180)
|
||||
tz = self._parse_timezone(body, lat, lon, year, month, day, hour, minute, second)
|
||||
tz = self._parse_timezone(body, lat, lon, year, month, day, birth_hour, birth_minute, birth_second)
|
||||
hour_decimal = self._birth_hour_decimal(birth_hour, birth_minute, birth_second)
|
||||
solar_lon = planets.get('Sun', {}).get('lon', 0)
|
||||
base_planets = base_result.get('planets', {}) if isinstance(base_result, dict) else {}
|
||||
@@ -2980,7 +2980,17 @@ class JyotishAPIHandler(BaseHTTPRequestHandler):
|
||||
birth_dt = self._parse_birth_datetime(body)
|
||||
lat = self._get_float(body, 'lat', body.get('birth_lat', 0), -90, 90)
|
||||
lon = self._get_float(body, 'lon', body.get('birth_lon', 0), -180, 180)
|
||||
tz = self._parse_timezone(body, lat, lon, year, month, day, hour, minute, second)
|
||||
tz = self._parse_timezone(
|
||||
body,
|
||||
lat,
|
||||
lon,
|
||||
birth_dt.year,
|
||||
birth_dt.month,
|
||||
birth_dt.day,
|
||||
birth_dt.hour,
|
||||
birth_dt.minute,
|
||||
birth_dt.second,
|
||||
)
|
||||
solar_return = _load_local_module('solar_return')
|
||||
report = solar_return.solar_return_full_report(
|
||||
birth_dt.year,
|
||||
@@ -4558,6 +4568,9 @@ class JyotishAPIHandler(BaseHTTPRequestHandler):
|
||||
inferred.append('ashtakavarga')
|
||||
if 'ashtakavarga' in domains and 'sodhita' in name:
|
||||
inferred.append('ashtakavarga')
|
||||
if key == 'bhrigu_bindu' or 'calc_bhrigu_bindu' in path_text:
|
||||
inferred.append('full-reading')
|
||||
inferred.append('varga-full')
|
||||
return sorted(set(inferred))
|
||||
|
||||
def _productization_next_action(self, level, commands, api_commands, visible_markers):
|
||||
|
||||
@@ -0,0 +1,294 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Build a single-truth inventory for oracle and benchmark assets."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
from collections import defaultdict
|
||||
from datetime import datetime, timezone
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
ORACLE_DIR = ROOT / "references" / "oracle"
|
||||
ARTIFACTS_DIR = ORACLE_DIR / "artifacts"
|
||||
PENDING_PACKETS_DIR = ARTIFACTS_DIR / "pending_packets"
|
||||
CASES_DIR = ORACLE_DIR / "cases"
|
||||
EVIDENCE_TEMPLATES_DIR = ORACLE_DIR / "evidence_packet_templates"
|
||||
DOCS_DIR = ROOT / "docs" / "research"
|
||||
PYJHORA_MANIFEST = ARTIFACTS_DIR / "pyjhora_oracle_artifact_manifest.json"
|
||||
|
||||
DASHBOARD_CANDIDATES = [
|
||||
DOCS_DIR / "oracle_closure_master_dashboard_latest.md",
|
||||
DOCS_DIR / "public_benchmark_dashboard_latest.md",
|
||||
DOCS_DIR / "tajika_annual_benchmark_dashboard_latest.md",
|
||||
DOCS_DIR / "tajika_annual_closure_status_latest.md",
|
||||
]
|
||||
|
||||
|
||||
def _relative(path: Path) -> str:
|
||||
return str(path.relative_to(ROOT))
|
||||
|
||||
|
||||
def _front_for_name(name: str) -> str:
|
||||
lowered = name.lower()
|
||||
if "ashtakoot" in lowered or "koota" in lowered:
|
||||
return "ashtakoot"
|
||||
if "varshaphala" in lowered or "saham" in lowered or "tajika" in lowered or "annual" in lowered:
|
||||
return "tajika_sahams"
|
||||
if "shadbala" in lowered or "moon_longitude" in lowered:
|
||||
return "shadbala"
|
||||
if "dasha" in lowered or "vimshottari" in lowered or "historical_epoch" in lowered:
|
||||
return "dasha"
|
||||
return "general"
|
||||
|
||||
|
||||
def _load_json(path: Path) -> tuple[dict[str, Any] | list[Any] | None, str | None]:
|
||||
try:
|
||||
data = json.loads(path.read_text(encoding="utf-8"))
|
||||
except Exception as exc: # pragma: no cover - exact parser messages vary
|
||||
return None, f"{type(exc).__name__}: {exc}"
|
||||
if isinstance(data, (dict, list)):
|
||||
return data, None
|
||||
return None, "JSON root is not an object or array"
|
||||
|
||||
|
||||
def _compact_json_metadata(path: Path, data: dict[str, Any] | list[Any] | None) -> dict[str, Any]:
|
||||
if not isinstance(data, dict):
|
||||
return {}
|
||||
|
||||
metadata: dict[str, Any] = {}
|
||||
for key in ("scope", "schema_version", "status", "case_id", "capture_id", "id", "source"):
|
||||
if key in data:
|
||||
metadata[key] = data[key]
|
||||
|
||||
if isinstance(data.get("metadata"), dict):
|
||||
source_artifact = data["metadata"].get("source_artifact")
|
||||
tool_name = data["metadata"].get("tool_name")
|
||||
if source_artifact:
|
||||
metadata["source_artifact"] = source_artifact
|
||||
if tool_name:
|
||||
metadata["tool_name"] = tool_name
|
||||
|
||||
if isinstance(data.get("settings"), dict):
|
||||
settings = data["settings"]
|
||||
for key in ("ayanamsa", "node_mode", "annual_system", "target_year"):
|
||||
if key in settings:
|
||||
metadata[key] = settings[key]
|
||||
|
||||
for case_list_key in ("template_cases", "longitude_cases", "ashtakoot_cases", "cases"):
|
||||
if isinstance(data.get(case_list_key), list):
|
||||
metadata[f"{case_list_key}_count"] = len(data[case_list_key])
|
||||
|
||||
target_placeholders = data.get("target_placeholders")
|
||||
if isinstance(target_placeholders, dict):
|
||||
metadata["target_placeholder_count"] = len(target_placeholders)
|
||||
|
||||
if path.name == PYJHORA_MANIFEST.name:
|
||||
metadata["artifact_count"] = data.get("artifact_count")
|
||||
metadata["packet_count"] = data.get("packet_count")
|
||||
|
||||
return metadata
|
||||
|
||||
|
||||
def _file_entry(path: Path, category: str) -> dict[str, Any]:
|
||||
entry: dict[str, Any] = {
|
||||
"path": _relative(path),
|
||||
"name": path.name,
|
||||
"category": category,
|
||||
"front": _front_for_name(path.name),
|
||||
"bytes": path.stat().st_size,
|
||||
}
|
||||
if path.suffix == ".json":
|
||||
data, error = _load_json(path)
|
||||
entry["json_valid"] = error is None
|
||||
if error:
|
||||
entry["json_error"] = error
|
||||
entry.update(_compact_json_metadata(path, data))
|
||||
return entry
|
||||
|
||||
|
||||
def _existing_files(paths: list[Path]) -> list[Path]:
|
||||
return [path for path in paths if path.is_file()]
|
||||
|
||||
|
||||
def _front_summary(groups: dict[str, list[dict[str, Any]]]) -> dict[str, dict[str, int]]:
|
||||
fronts: dict[str, dict[str, int]] = defaultdict(
|
||||
lambda: {
|
||||
"oracle_registry_count": 0,
|
||||
"oracle_case_count": 0,
|
||||
"evidence_template_count": 0,
|
||||
"pending_packet_count": 0,
|
||||
"pyjhora_artifact_count": 0,
|
||||
"dashboard_count": 0,
|
||||
}
|
||||
)
|
||||
category_map = {
|
||||
"oracle_registries": "oracle_registry_count",
|
||||
"oracle_cases": "oracle_case_count",
|
||||
"evidence_templates": "evidence_template_count",
|
||||
"pending_packets": "pending_packet_count",
|
||||
"pyjhora_artifacts": "pyjhora_artifact_count",
|
||||
"dashboards": "dashboard_count",
|
||||
}
|
||||
for group_name, count_key in category_map.items():
|
||||
for entry in groups.get(group_name, []):
|
||||
fronts[entry["front"]][count_key] += 1
|
||||
return {front: dict(payload) for front, payload in sorted(fronts.items())}
|
||||
|
||||
|
||||
def _count_pyjhora_packets(entries: list[dict[str, Any]]) -> int:
|
||||
return sum(1 for entry in entries if "pyjhora_" in entry["name"].lower())
|
||||
|
||||
|
||||
def build_inventory() -> dict[str, Any]:
|
||||
oracle_registries = [
|
||||
_file_entry(path, "oracle_registry")
|
||||
for path in sorted(ORACLE_DIR.glob("*_oracle_cases.json"))
|
||||
if path.is_file()
|
||||
]
|
||||
oracle_cases = [
|
||||
_file_entry(path, "oracle_case")
|
||||
for path in sorted(CASES_DIR.glob("*.json"))
|
||||
if path.is_file()
|
||||
]
|
||||
evidence_templates = [
|
||||
_file_entry(path, "evidence_template")
|
||||
for path in sorted(EVIDENCE_TEMPLATES_DIR.glob("*.json"))
|
||||
if path.is_file()
|
||||
]
|
||||
pending_packets = [
|
||||
_file_entry(path, "pending_packet")
|
||||
for path in sorted(PENDING_PACKETS_DIR.glob("*.json"))
|
||||
if path.is_file()
|
||||
]
|
||||
pyjhora_artifacts = [
|
||||
_file_entry(path, "pyjhora_artifact")
|
||||
for path in sorted(ARTIFACTS_DIR.glob("pyjhora_*"))
|
||||
if path.is_file() and path.name != PYJHORA_MANIFEST.name
|
||||
]
|
||||
dashboards = [
|
||||
_file_entry(path, "dashboard")
|
||||
for path in _existing_files(DASHBOARD_CANDIDATES)
|
||||
]
|
||||
|
||||
pyjhora_manifest_entry = _file_entry(PYJHORA_MANIFEST, "pyjhora_manifest") if PYJHORA_MANIFEST.is_file() else {}
|
||||
groups = {
|
||||
"oracle_registries": oracle_registries,
|
||||
"oracle_cases": oracle_cases,
|
||||
"evidence_templates": evidence_templates,
|
||||
"pending_packets": pending_packets,
|
||||
"pyjhora_artifacts": pyjhora_artifacts,
|
||||
"dashboards": dashboards,
|
||||
}
|
||||
|
||||
pending_pyjhora_packet_count = _count_pyjhora_packets(pending_packets)
|
||||
summary = {
|
||||
"oracle_registry_count": len(oracle_registries),
|
||||
"oracle_case_count": len(oracle_cases),
|
||||
"evidence_template_count": len(evidence_templates),
|
||||
"pending_packet_count": len(pending_packets),
|
||||
"pending_pyjhora_packet_count": pending_pyjhora_packet_count,
|
||||
"pending_non_pyjhora_packet_count": len(pending_packets) - pending_pyjhora_packet_count,
|
||||
"pyjhora_artifact_count": len(pyjhora_artifacts),
|
||||
"dashboard_count": len(dashboards),
|
||||
}
|
||||
|
||||
return {
|
||||
"scope": "oracle_benchmark_single_truth_inventory",
|
||||
"schema_version": 1,
|
||||
"generated_at": datetime.now(timezone.utc).isoformat(),
|
||||
"summary": summary,
|
||||
"fronts": _front_summary(groups),
|
||||
"files": {
|
||||
"oracle_registries": oracle_registries,
|
||||
"oracle_cases": oracle_cases,
|
||||
"evidence_templates": evidence_templates,
|
||||
"pending_packets": pending_packets,
|
||||
"pyjhora_artifacts": pyjhora_artifacts,
|
||||
"pyjhora_manifest": pyjhora_manifest_entry,
|
||||
"dashboards": dashboards,
|
||||
},
|
||||
"boundary": (
|
||||
"This inventory tracks external oracle evidence only. It does not import PyJHora/JHora "
|
||||
"implementation code, does not tune production constants, and does not treat internal "
|
||||
"consistency as external validation."
|
||||
),
|
||||
"next_actions": [
|
||||
"Promote verified pending packets into the relevant oracle registry only after metadata and source_artifact pass validation.",
|
||||
"Keep PyJHora outputs as black-box artifacts and regenerate the artifact manifest after each external capture batch.",
|
||||
"Update public_benchmark_dashboard_latest.md after each validated packet batch so public claims stay conservative.",
|
||||
"Use this inventory before changing strict workflow or adjudicator logic that depends on external truth.",
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
def render_markdown(report: dict[str, Any]) -> str:
|
||||
summary = report["summary"]
|
||||
lines = [
|
||||
"# Oracle Benchmark Single-Truth Inventory",
|
||||
"",
|
||||
f"Generated: `{report['generated_at']}`",
|
||||
"",
|
||||
"## Summary",
|
||||
"",
|
||||
f"- oracle_registry_count: `{summary['oracle_registry_count']}`",
|
||||
f"- oracle_case_count: `{summary['oracle_case_count']}`",
|
||||
f"- evidence_template_count: `{summary['evidence_template_count']}`",
|
||||
f"- pending_packet_count: `{summary['pending_packet_count']}`",
|
||||
f"- pending_pyjhora_packet_count: `{summary['pending_pyjhora_packet_count']}`",
|
||||
f"- pending_non_pyjhora_packet_count: `{summary['pending_non_pyjhora_packet_count']}`",
|
||||
f"- pyjhora_artifact_count: `{summary['pyjhora_artifact_count']}`",
|
||||
f"- dashboard_count: `{summary['dashboard_count']}`",
|
||||
"",
|
||||
"## Oracle Registries",
|
||||
"",
|
||||
]
|
||||
for entry in report["files"]["oracle_registries"]:
|
||||
lines.append(f"- `{entry['path']}` ({entry['front']})")
|
||||
lines.extend(["", "## Oracle Case Files", ""])
|
||||
for entry in report["files"]["oracle_cases"]:
|
||||
lines.append(f"- `{entry['path']}` ({entry['front']})")
|
||||
lines.extend(["", "## Pending Evidence Packets", ""])
|
||||
for entry in report["files"]["pending_packets"]:
|
||||
status = entry.get("status", "unknown")
|
||||
case_id = entry.get("case_id") or entry.get("capture_id") or entry["name"]
|
||||
lines.append(f"- `{entry['path']}` ({entry['front']}, status: `{status}`, case: `{case_id}`)")
|
||||
lines.extend(["", "## PyJHora Black-Box Assets", ""])
|
||||
for entry in report["files"]["pyjhora_artifacts"]:
|
||||
lines.append(f"- `{entry['path']}` ({entry['front']})")
|
||||
manifest = report["files"].get("pyjhora_manifest") or {}
|
||||
if manifest:
|
||||
lines.extend(["", f"Manifest: `{manifest['path']}`"])
|
||||
lines.extend(["", "## Dashboards", ""])
|
||||
for entry in report["files"]["dashboards"]:
|
||||
lines.append(f"- `{entry['path']}`")
|
||||
lines.extend(["", "## Boundary", "", report["boundary"], "", "## Next Actions", ""])
|
||||
lines.extend(f"- {item}" for item in report["next_actions"])
|
||||
lines.append("")
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
def parse_args(argv: list[str] | None = None) -> argparse.Namespace:
|
||||
parser = argparse.ArgumentParser(description="Generate oracle/benchmark single-truth inventory")
|
||||
parser.add_argument("--format", choices=["json", "markdown"], default="json")
|
||||
parser.add_argument("--output", help="Optional output path")
|
||||
return parser.parse_args(argv)
|
||||
|
||||
|
||||
def main(argv: list[str] | None = None) -> int:
|
||||
args = parse_args(argv)
|
||||
report = build_inventory()
|
||||
text = json.dumps(report, ensure_ascii=False, indent=2) if args.format == "json" else render_markdown(report)
|
||||
if args.output:
|
||||
output = Path(args.output)
|
||||
output.parent.mkdir(parents=True, exist_ok=True)
|
||||
output.write_text(text + ("\n" if not text.endswith("\n") else ""), encoding="utf-8")
|
||||
print(text)
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
@@ -11,6 +11,8 @@ related_skills: [jyotish-full-reading-integration, jyotish-vedic-astrology]
|
||||
|
||||
本 skill 记录了 5 个核心计算模块的历史集成背景,主要用于审计、迁移和对照旧工作流。
|
||||
|
||||
本 Skill 的 `scripts/` 副本仅作为独立分发包与历史迁移参考;主仓当前计算真源、成熟度判断、外部 oracle 边界和发布口径一律以主 `SKILL.md`、`references/technique_registry.json` 与主仓测试为准。
|
||||
|
||||
当前项目的唯一对外真源以以下文件为准:
|
||||
|
||||
1. `/Users/wuyongnaren/Documents/印度占星/SKILL.md`
|
||||
|
||||
@@ -766,6 +766,15 @@ def test_fragment_audit_blocks_registry_surface_drift() -> None:
|
||||
assert not any(problem['kind'] == 'missing_output_path' for problem in result['problems'])
|
||||
|
||||
|
||||
def test_fragment_audit_accepts_script_symbol_output_paths() -> None:
|
||||
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'scripts'))
|
||||
from audit_fragments import output_path_exists
|
||||
|
||||
assert output_path_exists("scripts/yoga_engine.py:is_badhaka")[0] is True
|
||||
assert output_path_exists("scripts/prashna.py:calc_sphutas")[0] is True
|
||||
assert output_path_exists("scripts/tajika.py.graha_yuddha")[0] is True
|
||||
|
||||
|
||||
def _sample_planets() -> dict:
|
||||
return {
|
||||
'Sun': {'lon': 80.0},
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Tests for the oracle/benchmark single-truth inventory."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import subprocess
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
|
||||
|
||||
def run_inventory(*args: str) -> subprocess.CompletedProcess[str]:
|
||||
return subprocess.run(
|
||||
[sys.executable, "scripts/oracle_benchmark_inventory.py", *args],
|
||||
cwd=ROOT,
|
||||
text=True,
|
||||
capture_output=True,
|
||||
timeout=60,
|
||||
check=False,
|
||||
)
|
||||
|
||||
|
||||
def test_oracle_benchmark_inventory_maps_high_value_assets() -> None:
|
||||
completed = run_inventory("--format", "json")
|
||||
|
||||
assert completed.returncode == 0, completed.stderr or completed.stdout
|
||||
report = json.loads(completed.stdout)
|
||||
assert report["scope"] == "oracle_benchmark_single_truth_inventory"
|
||||
assert report["schema_version"] == 1
|
||||
assert report["summary"]["oracle_registry_count"] >= 3
|
||||
assert report["summary"]["oracle_case_count"] >= 9
|
||||
assert report["summary"]["pending_packet_count"] >= 18
|
||||
assert report["summary"]["pyjhora_artifact_count"] >= 8
|
||||
assert report["files"]["pyjhora_manifest"]["path"].endswith(
|
||||
"references/oracle/artifacts/pyjhora_oracle_artifact_manifest.json"
|
||||
)
|
||||
|
||||
registry_paths = {entry["path"] for entry in report["files"]["oracle_registries"]}
|
||||
assert "references/oracle/dasha_shadbala_oracle_cases.json" in registry_paths
|
||||
assert "references/oracle/tajika_annual_oracle_cases.json" in registry_paths
|
||||
|
||||
case_paths = {entry["path"] for entry in report["files"]["oracle_cases"]}
|
||||
assert "references/oracle/cases/steve_jobs.json" in case_paths
|
||||
assert "references/oracle/cases/marilyn_monroe.json" in case_paths
|
||||
|
||||
pending_paths = {entry["path"] for entry in report["files"]["pending_packets"]}
|
||||
assert (
|
||||
"references/oracle/artifacts/pending_packets/"
|
||||
"external_template_steve_jobs_varshaphala_1984_lahiri.json"
|
||||
) in pending_paths
|
||||
assert (
|
||||
"references/oracle/artifacts/pending_packets/"
|
||||
"external_template_historical_dst_london_varshaphala_1943_lahiri.json"
|
||||
) in pending_paths
|
||||
|
||||
assert report["fronts"]["dasha"]["pending_packet_count"] >= 3
|
||||
assert report["fronts"]["shadbala"]["pending_packet_count"] >= 4
|
||||
assert report["fronts"]["tajika_sahams"]["pending_packet_count"] >= 5
|
||||
assert "external oracle evidence only" in report["boundary"]
|
||||
|
||||
|
||||
def test_oracle_benchmark_inventory_outputs_markdown_and_can_write_file(tmp_path: Path) -> None:
|
||||
output = tmp_path / "oracle_benchmark_inventory.md"
|
||||
completed = run_inventory("--format", "markdown", "--output", str(output))
|
||||
|
||||
assert completed.returncode == 0, completed.stderr or completed.stdout
|
||||
assert output.exists()
|
||||
markdown = output.read_text(encoding="utf-8")
|
||||
assert "# Oracle Benchmark Single-Truth Inventory" in markdown
|
||||
assert "Oracle Registries" in markdown
|
||||
assert "Pending Evidence Packets" in markdown
|
||||
assert "PyJHora Black-Box Assets" in markdown
|
||||
assert "Next Actions" in markdown
|
||||
@@ -53,27 +53,28 @@ def test_oracle_collection_queue_outputs_executable_json_tasks() -> None:
|
||||
|
||||
assert report["scope"] == "external_oracle_collection_queue"
|
||||
assert report["summary"]["total_tasks"] == 5
|
||||
assert report["summary"]["ready_for_calibration"] == 0
|
||||
assert report["summary"]["by_status"]["template_only"] == 5
|
||||
assert report["summary"]["ready_for_calibration"] == 4
|
||||
assert report["summary"]["ready_for_collection"] == 1
|
||||
assert report["summary"]["by_status"]["external_verified"] == 5
|
||||
assert report["summary"]["production_tuning_allowed"] is False
|
||||
|
||||
first = report["tasks"][0]
|
||||
assert first["case_id"] == "template_user_REDACTED_YEAR_moon_longitude_lahiri"
|
||||
assert first["status"] == "template_only"
|
||||
assert first["ready_for_collection"] is True
|
||||
assert first["ready_for_calibration"] is False
|
||||
assert "target.moon_sidereal_longitude_deg" in first["missing_target_fields"]
|
||||
assert first["status"] == "external_verified"
|
||||
assert first["ready_for_collection"] is False
|
||||
assert first["ready_for_calibration"] is True
|
||||
assert first["missing_target_fields"] == []
|
||||
assert "longitude" in first["target_modules"]
|
||||
assert "dasha" in first["target_modules"]
|
||||
assert "shadbala" in first["target_modules"]
|
||||
assert any("JHora" in source for source in first["preferred_sources"])
|
||||
assert any("VedAstro" in source for source in first["preferred_sources"])
|
||||
assert first["promotion_criteria"]
|
||||
assert first["do_not_tune_production"] is True
|
||||
assert first["do_not_tune_production"] is False
|
||||
|
||||
packet = first["evidence_packet"]
|
||||
assert packet["capture_id"] == "external_template_user_REDACTED_YEAR_moon_longitude_lahiri"
|
||||
assert packet["status"] == "draft"
|
||||
assert packet["status"] == "external_verified"
|
||||
assert packet["case_id"] == first["case_id"]
|
||||
assert packet["birth"] == first["birth"]
|
||||
assert packet["settings"] == first["settings"]
|
||||
@@ -82,10 +83,17 @@ def test_oracle_collection_queue_outputs_executable_json_tasks() -> None:
|
||||
assert "capture_date" in packet["required_metadata_fields"]
|
||||
assert "source_artifact" in packet["required_metadata_fields"]
|
||||
assert "target.moon_sidereal_longitude_deg" in packet["target_placeholders"]
|
||||
assert packet["target_placeholders"]["target.moon_sidereal_longitude_deg"] is None
|
||||
assert packet["target_placeholders"]["target.moon_sidereal_longitude_deg"] == 311.774424
|
||||
assert packet["integrity_checks"]["must_not_come_from_local_engine"] is True
|
||||
assert packet["integrity_checks"]["requires_external_artifact"] is True
|
||||
|
||||
blocked = next(task for task in report["tasks"] if task["case_id"] == "template_historical_epoch_lahiri")
|
||||
assert blocked["status"] == "external_verified"
|
||||
assert blocked["ready_for_collection"] is True
|
||||
assert blocked["ready_for_calibration"] is False
|
||||
assert blocked["do_not_tune_production"] is True
|
||||
assert blocked["missing_target_fields"] == ["target.sun_sidereal_longitude_deg"]
|
||||
|
||||
|
||||
def test_oracle_collection_queue_outputs_markdown_table() -> None:
|
||||
completed = run_queue("--format", "markdown")
|
||||
@@ -95,7 +103,8 @@ def test_oracle_collection_queue_outputs_markdown_table() -> None:
|
||||
assert "# Dasha/Shadbala External Oracle Collection Queue" in markdown
|
||||
assert "| task_id | case_id | status | missing fields | preferred sources |" in markdown
|
||||
assert "collect_template_user_REDACTED_YEAR_moon_longitude_lahiri" in markdown
|
||||
assert "`template_only`" in markdown
|
||||
assert "`external_verified`" in markdown
|
||||
assert "target.sun_sidereal_longitude_deg" in markdown
|
||||
assert "production_tuning_allowed: `false`" in markdown
|
||||
assert "Evidence Packet Fields" in markdown
|
||||
assert "tool_name" in markdown
|
||||
@@ -113,11 +122,11 @@ def test_oracle_collection_queue_can_write_draft_evidence_packets(tmp_path: Path
|
||||
assert packet_path.exists()
|
||||
packet = json.loads(packet_path.read_text(encoding="utf-8"))
|
||||
assert packet["capture_id"] == "external_template_steve_jobs_dasha_lahiri"
|
||||
assert packet["status"] == "draft"
|
||||
assert packet["status"] == "external_verified"
|
||||
assert packet["case_id"] == "template_steve_jobs_dasha_lahiri"
|
||||
assert packet["metadata"]["source_artifact"] == "references/oracle/artifacts/"
|
||||
assert packet["metadata"]["tool_name"] == ""
|
||||
assert packet["target_placeholders"]["target.vimshottari_start_date"] is None
|
||||
assert packet["metadata"]["source_artifact"].startswith("references/oracle/artifacts/")
|
||||
assert packet["metadata"]["tool_name"] == "PyJHora"
|
||||
assert packet["target_placeholders"]["target.vimshottari_start_date"] == "1939-03-22"
|
||||
shadbala = packet["target_placeholders"]["target.shadbala_components"]
|
||||
assert set(shadbala) == {"Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn"}
|
||||
assert set(shadbala["Sun"]) == {"sthana", "dig", "kala", "chesta", "naisargika", "drik", "total_rupa"}
|
||||
@@ -282,7 +291,7 @@ def test_oracle_collection_queue_preserves_external_verified_evidence(tmp_path:
|
||||
assert first["ready_for_collection"] is False
|
||||
assert first["ready_for_calibration"] is True
|
||||
assert first["do_not_tune_production"] is False
|
||||
assert report["summary"]["ready_for_calibration"] == 1
|
||||
assert report["summary"]["ready_for_calibration"] == 4
|
||||
assert report["summary"]["production_tuning_allowed"] is False
|
||||
|
||||
packet = first["evidence_packet"]
|
||||
|
||||
Reference in New Issue
Block a user