docs(oracle): add first shadbala packet operator card

This commit is contained in:
732642856
2026-06-26 18:33:21 +08:00
parent d611d51abe
commit bfebf50466
8 changed files with 87 additions and 14 deletions
+2 -2
View File
@@ -224,7 +224,7 @@ python3 scripts/oracle_closure_master_dashboard.py \
--output docs/benchmark/jyotish_external_oracle_closure_master_dashboard.md
```
当前总控看板固定输出 `total_tasks: 12``external_verified_tasks: 0``can_claim_global_oracle_closure: false`。推荐执行顺序是先填 Dasha 第一条 6 个字段,再填 Tajika/Sahams 第一条 15 个字段,最后填 Shadbala 第一条 54 个字段。
当前总控看板固定输出 `total_tasks: 12``external_verified_tasks: 0``can_claim_global_oracle_closure: false`。推荐执行顺序是先填 Dasha 第一条 6 个字段,再填 Tajika/Sahams 第一条 15 个字段,最后填 Shadbala 第一条 55 个字段。
Dasha 外部 oracle 最短闭环状态板用于把“大运外部真值”从 Shadbala 绝对值大包中拆出来,优先推进第一条可验证边界日期:
@@ -246,7 +246,7 @@ python3 scripts/shadbala_oracle_closure_status.py \
--output docs/benchmark/shadbala_external_absolute_value_closure_status.md
```
当前第一优先级是 `external_template_redacted_place_shadbala_raman`。必须填写 Sun/Moon/Mars/Mercury/Jupiter/Venus/Saturn 的 `sthana``dig``kala``chesta``naisargika``drik``total_rupa`;验证器会检查分量和总分,不允许用一个全局倍率把本地输出硬缩放成外部值。
当前第一优先级是 `external_template_redacted_place_shadbala_raman`除了同一 oracle 行里的 `target.moon_sidereal_longitude_deg`,还必须填写 Sun/Moon/Mars/Mercury/Jupiter/Venus/Saturn 的 `sthana``dig``kala``chesta``naisargika``drik``total_rupa`;验证器会检查分量和总分,不允许用一个全局倍率把本地输出硬缩放成外部值。
Tajika/Sahams 年运系统使用独立的外部 oracle 队列,专门追踪 Varshaphala、太阳回归、Muntha、Year Lord、Mudda Dasha、Sahams 与 Tajika Yogas 的外部验证状态:
@@ -1,7 +1,7 @@
{
"scope": "jyotish_external_oracle_closure_master_dashboard",
"schema_version": 1,
"generated_at": "2026-06-26T10:13:06.681297+00:00",
"generated_at": "2026-06-26T10:31:36.549795+00:00",
"summary": {
"total_tasks": 12,
"external_verified_tasks": 0,
@@ -45,13 +45,14 @@
"case_id": "template_redacted_place_shadbala_raman",
"capture_id": "external_template_redacted_place_shadbala_raman",
"packet_path": "references/oracle/artifacts/pending_packets/external_template_redacted_place_shadbala_raman.json",
"missing_field_count": 54,
"missing_field_count": 55,
"missing_fields": [
"metadata.tool_name",
"metadata.tool_version_or_url",
"metadata.capture_date",
"metadata.operator_note",
"metadata.source_artifact",
"target.moon_sidereal_longitude_deg",
"target.shadbala_components.Sun.sthana",
"target.shadbala_components.Sun.dig",
"target.shadbala_components.Sun.kala",
@@ -159,7 +160,7 @@
"front": "shadbala",
"case_id": "template_redacted_place_shadbala_raman",
"capture_id": "external_template_redacted_place_shadbala_raman",
"missing_field_count": 54,
"missing_field_count": 55,
"apply_command": "python3 scripts/oracle_collection_queue.py --oracle-file references/oracle/dasha_shadbala_oracle_cases.json --apply-packet references/oracle/artifacts/pending_packets/external_template_redacted_place_shadbala_raman.json --format json"
}
],
@@ -1,6 +1,6 @@
# Jyotish External Oracle Closure Master Dashboard
Generated: `2026-06-26T10:13:07.673185+00:00`
Generated: `2026-06-26T10:31:38.662077+00:00`
## Summary
@@ -16,7 +16,7 @@ Generated: `2026-06-26T10:13:07.673185+00:00`
|---|---:|---:|---|---:|
| `dasha` | 3 | 0 | `template_steve_jobs_dasha_lahiri` | 6 |
| `tajika_sahams` | 5 | 0 | `template_steve_jobs_varshaphala_1984_lahiri` | 15 |
| `shadbala` | 4 | 0 | `template_redacted_place_shadbala_raman` | 54 |
| `shadbala` | 4 | 0 | `template_redacted_place_shadbala_raman` | 55 |
## Next Action Order
@@ -44,7 +44,7 @@ python3 scripts/tajika_annual_oracle_queue.py --oracle-file references/oracle/ta
- case_id: `template_redacted_place_shadbala_raman`
- capture_id: `external_template_redacted_place_shadbala_raman`
- missing_field_count: `54`
- missing_field_count: `55`
```bash
python3 scripts/oracle_collection_queue.py --oracle-file references/oracle/dasha_shadbala_oracle_cases.json --apply-packet references/oracle/artifacts/pending_packets/external_template_redacted_place_shadbala_raman.json --format json
@@ -45,6 +45,7 @@
"node_mode": "mean"
},
"required_target_fields": [
"target.moon_sidereal_longitude_deg",
"target.shadbala_components"
],
"missing_fields": [
@@ -53,6 +54,7 @@
"metadata.capture_date",
"metadata.operator_note",
"metadata.source_artifact",
"target.moon_sidereal_longitude_deg",
"target.shadbala_components.Sun.sthana",
"target.shadbala_components.Sun.dig",
"target.shadbala_components.Sun.kala",
@@ -114,6 +116,7 @@
"validate_command": "python3 scripts/oracle_collection_queue.py --oracle-file references/oracle/dasha_shadbala_oracle_cases.json --format json > /tmp/jyotish_oracle_queue_filled.json && python3 scripts/oracle_evidence_validator.py --queue-file /tmp/jyotish_oracle_queue_filled.json"
},
"next_actions": [
"Fill any supporting target fields on the same oracle row, such as Moon sidereal longitude, before validator review.",
"Fill all seven planets with Sthana, Dig, Kala, Chesta, Naisargika, Drik and total_rupa from an external oracle.",
"Do not use a single global multiplier to force totals; validator checks component sums.",
"Set status to external_verified only after artifact path and all Shadbala targets are filled.",
@@ -10,8 +10,8 @@
- case_id: `template_redacted_place_shadbala_raman`
- capture_id: `external_template_redacted_place_shadbala_raman`
- packet_path: `references/oracle/artifacts/pending_packets/external_template_redacted_place_shadbala_raman.json`
- required_target_fields: `target.shadbala_components`
- missing_fields: `metadata.tool_name, metadata.tool_version_or_url, metadata.capture_date, metadata.operator_note, metadata.source_artifact, target.shadbala_components.Sun.sthana, target.shadbala_components.Sun.dig, target.shadbala_components.Sun.kala, target.shadbala_components.Sun.chesta, target.shadbala_components.Sun.naisargika, target.shadbala_components.Sun.drik, target.shadbala_components.Sun.total_rupa, target.shadbala_components.Moon.sthana, target.shadbala_components.Moon.dig, target.shadbala_components.Moon.kala, target.shadbala_components.Moon.chesta, target.shadbala_components.Moon.naisargika, target.shadbala_components.Moon.drik, target.shadbala_components.Moon.total_rupa, target.shadbala_components.Mars.sthana, target.shadbala_components.Mars.dig, target.shadbala_components.Mars.kala, target.shadbala_components.Mars.chesta, target.shadbala_components.Mars.naisargika, target.shadbala_components.Mars.drik, target.shadbala_components.Mars.total_rupa, target.shadbala_components.Mercury.sthana, target.shadbala_components.Mercury.dig, target.shadbala_components.Mercury.kala, target.shadbala_components.Mercury.chesta, target.shadbala_components.Mercury.naisargika, target.shadbala_components.Mercury.drik, target.shadbala_components.Mercury.total_rupa, target.shadbala_components.Jupiter.sthana, target.shadbala_components.Jupiter.dig, target.shadbala_components.Jupiter.kala, target.shadbala_components.Jupiter.chesta, target.shadbala_components.Jupiter.naisargika, target.shadbala_components.Jupiter.drik, target.shadbala_components.Jupiter.total_rupa, target.shadbala_components.Venus.sthana, target.shadbala_components.Venus.dig, target.shadbala_components.Venus.kala, target.shadbala_components.Venus.chesta, target.shadbala_components.Venus.naisargika, target.shadbala_components.Venus.drik, target.shadbala_components.Venus.total_rupa, target.shadbala_components.Saturn.sthana, target.shadbala_components.Saturn.dig, target.shadbala_components.Saturn.kala, target.shadbala_components.Saturn.chesta, target.shadbala_components.Saturn.naisargika, target.shadbala_components.Saturn.drik, target.shadbala_components.Saturn.total_rupa`
- required_target_fields: `target.moon_sidereal_longitude_deg, target.shadbala_components`
- missing_fields: `metadata.tool_name, metadata.tool_version_or_url, metadata.capture_date, metadata.operator_note, metadata.source_artifact, target.moon_sidereal_longitude_deg, target.shadbala_components.Sun.sthana, target.shadbala_components.Sun.dig, target.shadbala_components.Sun.kala, target.shadbala_components.Sun.chesta, target.shadbala_components.Sun.naisargika, target.shadbala_components.Sun.drik, target.shadbala_components.Sun.total_rupa, target.shadbala_components.Moon.sthana, target.shadbala_components.Moon.dig, target.shadbala_components.Moon.kala, target.shadbala_components.Moon.chesta, target.shadbala_components.Moon.naisargika, target.shadbala_components.Moon.drik, target.shadbala_components.Moon.total_rupa, target.shadbala_components.Mars.sthana, target.shadbala_components.Mars.dig, target.shadbala_components.Mars.kala, target.shadbala_components.Mars.chesta, target.shadbala_components.Mars.naisargika, target.shadbala_components.Mars.drik, target.shadbala_components.Mars.total_rupa, target.shadbala_components.Mercury.sthana, target.shadbala_components.Mercury.dig, target.shadbala_components.Mercury.kala, target.shadbala_components.Mercury.chesta, target.shadbala_components.Mercury.naisargika, target.shadbala_components.Mercury.drik, target.shadbala_components.Mercury.total_rupa, target.shadbala_components.Jupiter.sthana, target.shadbala_components.Jupiter.dig, target.shadbala_components.Jupiter.kala, target.shadbala_components.Jupiter.chesta, target.shadbala_components.Jupiter.naisargika, target.shadbala_components.Jupiter.drik, target.shadbala_components.Jupiter.total_rupa, target.shadbala_components.Venus.sthana, target.shadbala_components.Venus.dig, target.shadbala_components.Venus.kala, target.shadbala_components.Venus.chesta, target.shadbala_components.Venus.naisargika, target.shadbala_components.Venus.drik, target.shadbala_components.Venus.total_rupa, target.shadbala_components.Saturn.sthana, target.shadbala_components.Saturn.dig, target.shadbala_components.Saturn.kala, target.shadbala_components.Saturn.chesta, target.shadbala_components.Saturn.naisargika, target.shadbala_components.Saturn.drik, target.shadbala_components.Saturn.total_rupa`
- reject_global_scaling: `true`
## Required Matrix
@@ -31,6 +31,7 @@ python3 scripts/oracle_collection_queue.py --oracle-file references/oracle/dasha
## Next Actions
- Fill any supporting target fields on the same oracle row, such as Moon sidereal longitude, before validator review.
- Fill all seven planets with Sthana, Dig, Kala, Chesta, Naisargika, Drik and total_rupa from an external oracle.
- Do not use a single global multiplier to force totals; validator checks component sums.
- Set status to external_verified only after artifact path and all Shadbala targets are filled.
+23 -3
View File
@@ -15,6 +15,7 @@ ROOT = Path(__file__).resolve().parents[1]
PYTHON = sys.executable
FIRST_PRIORITY_CASE_ID = "template_redacted_place_shadbala_raman"
SHADBALA_TARGET_FIELD = "target.shadbala_components"
SUPPORTING_TARGET_FIELDS = ["target.moon_sidereal_longitude_deg"]
REQUIRED_PLANETS = ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn"]
REQUIRED_COMPONENTS = ["sthana", "dig", "kala", "chesta", "naisargika", "drik", "total_rupa"]
@@ -69,6 +70,18 @@ def _shadbala_missing(packet: dict[str, Any]) -> list[str]:
return missing
def _supporting_missing(packet: dict[str, Any], target_fields: list[str]) -> list[str]:
placeholders = packet.get("target_placeholders", {})
missing: list[str] = []
for field in SUPPORTING_TARGET_FIELDS:
if field not in target_fields:
continue
value = placeholders.get(field)
if value is None or value == "" or value == [] or value == {}:
missing.append(field)
return missing
def _apply_command(packet_path: str, oracle_file: str) -> str:
return (
"python3 scripts/oracle_collection_queue.py "
@@ -101,10 +114,16 @@ def build_status(oracle_file: str) -> dict[str, Any]:
packet = priority["evidence_packet"]
capture_id = packet["capture_id"]
packet_path = f"references/oracle/artifacts/pending_packets/{capture_id}.json"
missing_fields = _metadata_missing(packet) + _shadbala_missing(packet)
target_fields = priority.get("target_fields", [])
supporting_target_fields = [field for field in SUPPORTING_TARGET_FIELDS if field in target_fields]
missing_fields = _metadata_missing(packet) + _supporting_missing(packet, target_fields) + _shadbala_missing(packet)
external_verified = [
task for task in shadbala_tasks
if task.get("status") == "external_verified" and not _shadbala_missing(task.get("evidence_packet", {}))
if (
task.get("status") == "external_verified"
and not _supporting_missing(task.get("evidence_packet", {}), task.get("target_fields", []))
and not _shadbala_missing(task.get("evidence_packet", {}))
)
]
return {
@@ -124,7 +143,7 @@ def build_status(oracle_file: str) -> dict[str, Any]:
"packet_path": packet_path,
"birth": priority.get("birth", {}),
"settings": priority.get("settings", {}),
"required_target_fields": [SHADBALA_TARGET_FIELD],
"required_target_fields": supporting_target_fields + [SHADBALA_TARGET_FIELD],
"missing_fields": missing_fields,
"external_sources": [
"JHora Shadbala component table screenshot",
@@ -137,6 +156,7 @@ def build_status(oracle_file: str) -> dict[str, Any]:
"validate_command": _validate_command(oracle_file),
},
"next_actions": [
"Fill any supporting target fields on the same oracle row, such as Moon sidereal longitude, before validator review.",
"Fill all seven planets with Sthana, Dig, Kala, Chesta, Naisargika, Drik and total_rupa from an external oracle.",
"Do not use a single global multiplier to force totals; validator checks component sums.",
"Set status to external_verified only after artifact path and all Shadbala targets are filled.",
@@ -0,0 +1,44 @@
#!/usr/bin/env python3
"""Tests for the first Shadbala external absolute-value operator card."""
from __future__ import annotations
import json
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
CARD = ROOT / "docs" / "benchmark" / "shadbala_redacted_place_raman_first_packet_operator_card.md"
PACKET = ROOT / "references" / "oracle" / "evidence_packet_templates" / "shadbala_redacted_place_raman_first_packet.json"
def test_shadbala_first_packet_operator_card_is_actionable() -> None:
text = CARD.read_text(encoding="utf-8")
assert "# First Shadbala Absolute-Value Oracle Packet Operator Card" in text
assert "template_redacted_place_shadbala_raman" in text
assert "target.shadbala_components.Sun.sthana" in text
assert "target.shadbala_components.Saturn.total_rupa" in text
assert "target.moon_sidereal_longitude_deg" in text
assert "reject_global_scaling" in text
assert "Do not use a global multiplier" in text
assert "--apply-packet" in text
assert "oracle_evidence_validator.py" in text
def test_shadbala_first_packet_template_contains_complete_component_matrix() -> None:
packet = json.loads(PACKET.read_text(encoding="utf-8"))
assert packet["capture_id"] == "external_template_redacted_place_shadbala_raman"
assert packet["status"] == "draft"
assert packet["case_id"] == "template_redacted_place_shadbala_raman"
assert packet["metadata"]["source_artifact"] == "references/oracle/artifacts/"
assert packet["settings"]["ayanamsa"] == "raman"
assert packet["target_placeholders"]["target.moon_sidereal_longitude_deg"] is None
shadbala = packet["target_placeholders"]["target.shadbala_components"]
assert set(shadbala) == {"Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn"}
for row in shadbala.values():
assert set(row) == {"sthana", "dig", "kala", "chesta", "naisargika", "drik", "total_rupa"}
assert all(value is None for value in row.values())
assert packet["operator_goal"] == "Fill one external Shadbala absolute-value component matrix."
assert packet["integrity_checks"]["reject_global_scaling"] is True
+5 -1
View File
@@ -43,8 +43,12 @@ def test_shadbala_oracle_closure_status_identifies_first_absolute_value_packet()
assert report["summary"]["required_components"] == ["sthana", "dig", "kala", "chesta", "naisargika", "drik", "total_rupa"]
assert report["first_priority"]["case_id"] == "template_redacted_place_shadbala_raman"
assert report["first_priority"]["capture_id"] == "external_template_redacted_place_shadbala_raman"
assert report["first_priority"]["required_target_fields"] == ["target.shadbala_components"]
assert report["first_priority"]["required_target_fields"] == [
"target.moon_sidereal_longitude_deg",
"target.shadbala_components",
]
assert "metadata.tool_name" in report["first_priority"]["missing_fields"]
assert "target.moon_sidereal_longitude_deg" in report["first_priority"]["missing_fields"]
assert "target.shadbala_components.Sun.sthana" in report["first_priority"]["missing_fields"]
assert "target.shadbala_components.Saturn.total_rupa" in report["first_priority"]["missing_fields"]
assert report["first_priority"]["reject_global_scaling"] is True