docs(oracle): add first shadbala packet operator card
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user