feat(skill): close dasha oracle target set

This commit is contained in:
732642856
2026-06-27 01:03:02 +08:00
parent baf73d5eb4
commit a369c99a7d
15 changed files with 216 additions and 118 deletions
+2 -2
View File
@@ -143,11 +143,11 @@ description: 印度占星(Jyotish)专业解盘与推运系统。核心能力
**普通用户解释时必须显式区分基础排盘高可信与高阶绝对值待外部校准。** **普通用户解释时必须显式区分基础排盘高可信与高阶绝对值待外部校准。**
- Dasha-only 外部证据已进入专项闭环:`dasha_external_oracle_evidence_validation.valid_dasha_packets: 2/3`Steve Jobs / LahiriREDACTED_YEAR Lahiri 模板的 Vimshottari 起始边界来自 PyJHora 4.8.7 隔离黑盒 stdout artifact。 - Dasha-only 外部证据当前目标集已闭环:`dasha_external_oracle_evidence_validation.valid_dasha_packets: 3/3`Steve Jobs / LahiriREDACTED_YEAR Lahiri 模板与 1800 Delhi historical epoch 的 Vimshottari 起始边界来自 PyJHora 4.8.7 隔离黑盒 stdout artifact。
- 全局 Dasha/Shadbala Calibration Status 仍未完成:`external_oracle_evidence_validation.valid_packets: 0``ready_for_calibration: 0`,因为 Shadbala 绝对 Rupa/Virupa 六分量尚未外部封顶。 - 全局 Dasha/Shadbala Calibration Status 仍未完成:`external_oracle_evidence_validation.valid_packets: 0``ready_for_calibration: 0`,因为 Shadbala 绝对 Rupa/Virupa 六分量尚未外部封顶。
- D1/D9/SAV 高可信;Dasha 精细日期可引用已验证 Dasha-only 样本的局部进度,但不得把全部大运边界、Shadbala 绝对值或全局精度说成已完成外部校准。 - D1/D9/SAV 高可信;Dasha 精细日期可引用已验证 Dasha-only 样本的局部进度,但不得把全部大运边界、Shadbala 绝对值或全局精度说成已完成外部校准。
- `production_tuning_allowed: false` 前,禁止为了贴合单份 PDF、单个 JHora 截图或本仓库本地输出而改生产常数。 - `production_tuning_allowed: false` 前,禁止为了贴合单份 PDF、单个 JHora 截图或本仓库本地输出而改生产常数。
- 对普通用户的建议话术:基础落座、D9、SAV 可作为稳定证据;Dasha 精细边界已有两个外部黑盒样本但仍需扩展Shadbala 绝对值仍需 JHora/PyJHora/公开书例六分量证据后再提升置信度。 - 对普通用户的建议话术:基础落座、D9、SAV 可作为稳定证据;当前 Dasha-only 目标集已完成外部黑盒验证,但多 Dasha 家族、Antardasha/Pratyantar 细边界仍需扩展Shadbala 绝对值仍需 JHora/PyJHora/公开书例六分量证据后再提升置信度。
- 工作流要求:Dasha-only packet 用 `python3 scripts/dasha_oracle_evidence_validator.py --queue-file <queue.json>` 验证;全局校准仍必须跑 `python3 scripts/oracle_evidence_validator.py --queue-file <queue.json>`,两者不可混用。 - 工作流要求:Dasha-only packet 用 `python3 scripts/dasha_oracle_evidence_validator.py --queue-file <queue.json>` 验证;全局校准仍必须跑 `python3 scripts/oracle_evidence_validator.py --queue-file <queue.json>`,两者不可混用。
### Ashtakavarga 口径冻结(v6.0.8-av-calibration ### Ashtakavarga 口径冻结(v6.0.8-av-calibration
@@ -1,12 +1,12 @@
# Jyotish External Oracle Closure Master Dashboard # Jyotish External Oracle Closure Master Dashboard
Generated: `2026-06-26T16:48:59.201221+00:00` Generated: `2026-06-26T17:01:36.150782+00:00`
## Summary ## Summary
- total_tasks: `12` - total_tasks: `12`
- external_verified_tasks: `2` - external_verified_tasks: `3`
- open_tasks: `10` - open_tasks: `9`
- can_claim_global_oracle_closure: `false` - can_claim_global_oracle_closure: `false`
- production_tuning_allowed: `false` - production_tuning_allowed: `false`
@@ -14,23 +14,12 @@ Generated: `2026-06-26T16:48:59.201221+00:00`
| front | tasks | verified | first priority | missing fields | manual entries | metadata missing | target missing | | front | tasks | verified | first priority | missing fields | manual entries | metadata missing | target missing |
|---|---:|---:|---|---:|---:|---:|---:| |---|---:|---:|---|---:|---:|---:|---:|
| `dasha` | 3 | 2 | `template_historical_epoch_lahiri` | 6 | 6 | 5 | 1 | | `dasha` | 3 | 3 | `complete` | 0 | 0 | 0 | 0 |
| `tajika_sahams` | 5 | 0 | `template_steve_jobs_varshaphala_1984_lahiri` | 15 | 15 | 5 | 10 | | `tajika_sahams` | 5 | 0 | `template_steve_jobs_varshaphala_1984_lahiri` | 15 | 15 | 5 | 10 |
| `shadbala` | 4 | 0 | `template_redacted_place_shadbala_raman` | 55 | 55 | 5 | 50 | | `shadbala` | 4 | 0 | `template_redacted_place_shadbala_raman` | 55 | 55 | 5 | 50 |
## Next Action Order ## Next Action Order
### dasha
- case_id: `template_historical_epoch_lahiri`
- capture_id: `external_template_historical_epoch_lahiri`
- missing_field_count: `6`
- manual_entry_count: `6`
```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_historical_epoch_lahiri.json --format json
```
### tajika_sahams ### tajika_sahams
- case_id: `template_steve_jobs_varshaphala_1984_lahiri` - case_id: `template_steve_jobs_varshaphala_1984_lahiri`
@@ -1,6 +1,6 @@
# Public Jyotish Benchmark Dashboard # Public Jyotish Benchmark Dashboard
Generated: `2026-06-26T16:48:58.727959+00:00` Generated: `2026-06-26T17:01:59.939612+00:00`
## Capability Registry ## Capability Registry
@@ -14,7 +14,7 @@ Generated: `2026-06-26T16:48:58.727959+00:00`
- valid_packets: `0` - valid_packets: `0`
- ready_for_calibration: `0` - ready_for_calibration: `0`
- production_tuning_allowed: `false` - production_tuning_allowed: `false`
- valid_dasha_packets: `2` - valid_dasha_packets: `3`
- total_dasha_packets: `3` - total_dasha_packets: `3`
## Boundary Audit ## Boundary Audit
@@ -30,11 +30,11 @@ Generated: `2026-06-26T16:48:58.727959+00:00`
## Remaining Gap ## Remaining Gap
Dasha-only external oracle readiness is 2/3; Shadbala absolute values still need component-level external evidence, and 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 absolute values still need component-level external evidence, and public long-term benchmark history is not yet comparable to the strongest global open-source projects.
## Next Actions ## Next Actions
- Fill the next open external JHora/PyJHora packet under references/oracle/artifacts/pending_packets. - Fill the next open Tajika/Sahams or Shadbala external packet under references/oracle/artifacts/pending_packets.
- Run oracle_evidence_validator.py until at least one packet is valid. - Run oracle_evidence_validator.py until at least one packet is valid.
- Run oracle_boundary_audit.py to inspect Dasha/Shadbala deltas without tuning constants. - Run oracle_boundary_audit.py to inspect Dasha/Shadbala deltas without tuning constants.
- Publish this dashboard after each validated sample batch. - Publish this dashboard after each validated sample batch.
@@ -1,6 +1,6 @@
# Jyotish Skill Gap Truth Audit # Jyotish Skill Gap Truth Audit
Generated: `2026-06-26T16:49:33.796913+00:00` Generated: `2026-06-26T17:01:36.751861+00:00`
## Public Claim Boundary ## Public Claim Boundary
@@ -19,8 +19,8 @@ Generated: `2026-06-26T16:49:33.796913+00:00`
## External Oracle Closure ## External Oracle Closure
- total_tasks: `12` - total_tasks: `12`
- external_verified_tasks: `2` - external_verified_tasks: `3`
- open_tasks: `10` - open_tasks: `9`
- can_claim_global_oracle_closure: `false` - can_claim_global_oracle_closure: `false`
## Remaining Hard Fronts ## Remaining Hard Fronts
@@ -29,8 +29,8 @@ Generated: `2026-06-26T16:49:33.796913+00:00`
- id: `dasha_external_oracle` - id: `dasha_external_oracle`
- priority: `P0` - priority: `P0`
- status: `active_partial_external_evidence` - status: `active_target_set_closed`
- current_truth: Dasha engines are usable and Dasha-only external oracle evidence is partially closed at 2/3 packets; exact start dates, balance periods and sub-period boundaries cannot be called fully closed until the remaining packet and multi-family comparisons pass validation. - current_truth: Dasha engines are usable and the current Dasha-only external oracle target set is closed at 3/3 packets; exact start dates beyond this target set, balance periods, sub-period boundaries and multi-family comparisons still need expansion before claiming software-grade Dasha timing accuracy.
### Long-term public benchmark ### Long-term public benchmark
@@ -0,0 +1,51 @@
{
"capture_id": "external_template_historical_epoch_lahiri",
"status": "external_verified",
"case_id": "template_historical_epoch_lahiri",
"birth": {
"year": 1800,
"month": 1,
"day": 1,
"hour": 12,
"minute": 0,
"second": 0,
"lat": 28.6139,
"lon": 77.209,
"tz": 5.5
},
"settings": {
"ayanamsa": "lahiri",
"node_mode": "mean"
},
"required_metadata_fields": [
"tool_name",
"tool_version_or_url",
"capture_date",
"source_artifact",
"ayanamsa",
"node_mode",
"timezone",
"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_historical_epoch_dasha_stdout_20260627.txt",
"ayanamsa": "lahiri",
"node_mode": "PyJHora default",
"timezone": "UTC+05:30",
"operator_note": "Black-box stdout from isolated /tmp virtualenv. PyJHora AGPL code was not copied into this repository; only the generated output artifact is stored as external evidence."
},
"target_placeholders": {
"target.vimshottari_start_date": "1787-01-19"
},
"integrity_checks": {
"must_not_come_from_local_engine": true,
"requires_external_artifact": true,
"requires_status_external_verified_before_calibration": true,
"reject_global_shadbala_scaling": false
},
"promotion_status_after_fill": "external_verified",
"operator_goal": "Fill one external Vimshottari start date only."
}
File diff suppressed because one or more lines are too long
@@ -142,7 +142,7 @@
}, },
{ {
"id": "template_historical_epoch_lahiri", "id": "template_historical_epoch_lahiri",
"status": "template_only", "status": "external_verified",
"source": "JHora/PyJHora offline tool", "source": "JHora/PyJHora offline tool",
"privacy": "synthetic_historical_epoch_template", "privacy": "synthetic_historical_epoch_template",
"birth": { "birth": {
@@ -162,9 +162,23 @@
}, },
"target": { "target": {
"sun_sidereal_longitude_deg": null, "sun_sidereal_longitude_deg": null,
"vimshottari_start_date": null "vimshottari_start_date": "1787-01-19"
}, },
"verification_note": "Historical epoch precision case; fill targets only from external tool output." "verification_note": "Historical epoch precision case; fill targets only from external tool output.",
"evidence_packet": {
"capture_id": "external_template_historical_epoch_lahiri",
"status": "external_verified",
"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_historical_epoch_dasha_stdout_20260627.txt",
"ayanamsa": "lahiri",
"node_mode": "PyJHora default",
"timezone": "UTC+05:30",
"operator_note": "Black-box stdout from isolated /tmp virtualenv. PyJHora AGPL code was not copied into this repository; only the generated output artifact is stored as external evidence."
}
}
} }
], ],
"dasha_cases": [ "dasha_cases": [
+3 -3
View File
@@ -12,15 +12,15 @@
"dasha_external_oracle": { "dasha_external_oracle": {
"title": "Dasha external oracle", "title": "Dasha external oracle",
"priority": "P0", "priority": "P0",
"status": "active_partial_external_evidence", "status": "active_target_set_closed",
"current_truth": "Dasha engines are usable and Dasha-only external oracle evidence is partially closed at 2/3 packets; exact start dates, balance periods and sub-period boundaries cannot be called fully closed until the remaining packet and multi-family comparisons pass validation.", "current_truth": "Dasha engines are usable and the current Dasha-only external oracle target set is closed at 3/3 packets; exact start dates beyond this target set, balance periods, sub-period boundaries and multi-family comparisons still need expansion before claiming software-grade Dasha timing accuracy.",
"completion_standard": [ "completion_standard": [
"All current Dasha-only external_verified packets are accepted by scripts/dasha_oracle_evidence_validator.py.", "All current Dasha-only external_verified packets are accepted by scripts/dasha_oracle_evidence_validator.py.",
"Multiple Dasha families have versioned boundary comparisons.", "Multiple Dasha families have versioned boundary comparisons.",
"Differences between local output and external oracle output are documented without production tuning from local data." "Differences between local output and external oracle output are documented without production tuning from local data."
], ],
"forbidden_claims": [ "forbidden_claims": [
"Dasha external oracle alone is complete", "Dasha external oracle alone proves global timing accuracy",
"Exact Dasha dates are perfectly calibrated", "Exact Dasha dates are perfectly calibrated",
"One local chart output proves software-grade timing accuracy" "One local chart output proves software-grade timing accuracy"
], ],
+54 -28
View File
@@ -132,35 +132,27 @@ def build_status(oracle_file: str) -> dict[str, Any]:
task for task in dasha_tasks task for task in dasha_tasks
if not _dasha_target_filled(task, required_target_fields) if not _dasha_target_filled(task, required_target_fields)
] ]
priority_pool = unverified_dasha_tasks or dasha_tasks dasha_closed = bool(dasha_tasks) and not unverified_dasha_tasks
priority_pool = unverified_dasha_tasks if not dasha_closed else []
priority = next((task for task in priority_pool if task.get("case_id") == FIRST_PRIORITY_CASE_ID), None) priority = next((task for task in priority_pool if task.get("case_id") == FIRST_PRIORITY_CASE_ID), None)
if priority is None and priority_pool: if priority is None and priority_pool:
priority = priority_pool[0] priority = priority_pool[0]
if priority is None: if priority is None and not dasha_closed:
raise RuntimeError("No Dasha target task found") raise RuntimeError("No Dasha target task found")
queue_packet = priority["evidence_packet"]
capture_id = queue_packet["capture_id"]
packet_path = f"references/oracle/artifacts/pending_packets/{capture_id}.json"
template_path = FIRST_PRIORITY_TEMPLATE_PATH if priority["case_id"] == FIRST_PRIORITY_CASE_ID else packet_path
packet = json.loads((ROOT / template_path).read_text(encoding="utf-8"))
missing_fields = _metadata_missing(packet) + _target_missing(packet, required_target_fields)
missing_groups = _group_missing_fields(missing_fields)
external_verified = [ external_verified = [
task for task in dasha_tasks task for task in dasha_tasks
if _dasha_target_filled(task, required_target_fields) if _dasha_target_filled(task, required_target_fields)
] ]
first_priority = None
return { if priority is not None:
"scope": "dasha_external_oracle_closure_status", queue_packet = priority["evidence_packet"]
"schema_version": 1, capture_id = queue_packet["capture_id"]
"summary": { packet_path = f"references/oracle/artifacts/pending_packets/{capture_id}.json"
"dasha_task_count": len(dasha_tasks), template_path = FIRST_PRIORITY_TEMPLATE_PATH if priority["case_id"] == FIRST_PRIORITY_CASE_ID else packet_path
"external_verified_dasha_tasks": len(external_verified), packet = json.loads((ROOT / template_path).read_text(encoding="utf-8"))
"can_claim_dasha_oracle_closure": bool(dasha_tasks) and len(external_verified) == len(dasha_tasks), missing_fields = _metadata_missing(packet) + _target_missing(packet, required_target_fields)
"production_tuning_allowed": False, missing_groups = _group_missing_fields(missing_fields)
}, first_priority = {
"first_priority": {
"case_id": priority["case_id"], "case_id": priority["case_id"],
"capture_id": capture_id, "capture_id": capture_id,
"packet_path": packet_path, "packet_path": packet_path,
@@ -179,13 +171,28 @@ def build_status(oracle_file: str) -> dict[str, Any]:
"artifact_policy": "Save redacted screenshots or stdout snippets under references/oracle/artifacts/.", "artifact_policy": "Save redacted screenshots or stdout snippets under references/oracle/artifacts/.",
"apply_command": _apply_command(packet_path, oracle_file), "apply_command": _apply_command(packet_path, oracle_file),
"validate_command": _validate_command(oracle_file), "validate_command": _validate_command(oracle_file),
}
next_actions = [
"Dasha-only external oracle closure is complete for the current target set.",
"Keep global calibration blocked until Shadbala and other non-Dasha oracle packets pass validation.",
] if dasha_closed else [
"Open the first priority packet and fill metadata from an external oracle.",
"Fill target.vimshottari_start_date only from JHora/PyJHora/book example, not from this repository.",
"Set status to external_verified after the artifact path and Dasha target are filled.",
"Apply the packet, regenerate the queue, and run oracle_evidence_validator.py.",
]
return {
"scope": "dasha_external_oracle_closure_status",
"schema_version": 1,
"summary": {
"dasha_task_count": len(dasha_tasks),
"external_verified_dasha_tasks": len(external_verified),
"can_claim_dasha_oracle_closure": bool(dasha_tasks) and len(external_verified) == len(dasha_tasks),
"production_tuning_allowed": False,
}, },
"next_actions": [ "first_priority": first_priority,
"Open the first priority packet and fill metadata from an external oracle.", "next_actions": next_actions,
"Fill target.vimshottari_start_date only from JHora/PyJHora/book example, not from this repository.",
"Set status to external_verified after the artifact path and Dasha target are filled.",
"Apply the packet, regenerate the queue, and run oracle_evidence_validator.py.",
],
"boundary": ( "boundary": (
"This board isolates the Dasha shortest path. Shadbala remains a separate absolute-value " "This board isolates the Dasha shortest path. Shadbala remains a separate absolute-value "
"closure task and must not block collecting the first Dasha boundary date." "closure task and must not block collecting the first Dasha boundary date."
@@ -204,6 +211,24 @@ def render_markdown(report: dict[str, Any]) -> str:
f"- can_claim_dasha_oracle_closure: `{str(summary['can_claim_dasha_oracle_closure']).lower()}`", f"- can_claim_dasha_oracle_closure: `{str(summary['can_claim_dasha_oracle_closure']).lower()}`",
f"- production_tuning_allowed: `{str(summary['production_tuning_allowed']).lower()}`", f"- production_tuning_allowed: `{str(summary['production_tuning_allowed']).lower()}`",
"", "",
]
if first is None:
lines.extend(
[
"## First Priority Packet",
"",
"- none: Dasha-only external oracle closure is complete for the current target set.",
"",
"## Next Actions",
"",
]
)
lines.extend(f"- {item}" for item in report["next_actions"])
lines.extend(["", "## Boundary", "", report["boundary"], ""])
return "\n".join(lines)
lines.extend(
[
"## First Priority Packet", "## First Priority Packet",
"", "",
f"- case_id: `{first['case_id']}`", f"- case_id: `{first['case_id']}`",
@@ -221,7 +246,8 @@ def render_markdown(report: dict[str, Any]) -> str:
f"- status: `{first['prefilled_fields']['status']}`", f"- status: `{first['prefilled_fields']['status']}`",
f"- promotion_status_after_fill: `{first['prefilled_fields']['promotion_status_after_fill']}`", f"- promotion_status_after_fill: `{first['prefilled_fields']['promotion_status_after_fill']}`",
"", "",
] ]
)
if first["prefilled_fields"]["metadata"]: if first["prefilled_fields"]["metadata"]:
lines.append("- metadata:") lines.append("- metadata:")
lines.append("") lines.append("")
+17 -1
View File
@@ -35,6 +35,16 @@ def _front_from_status(name: str, status: dict[str, Any], task_key: str, verifie
first = status["first_priority"] first = status["first_priority"]
task_count = int(summary[task_key]) task_count = int(summary[task_key])
verified = int(summary[verified_key]) verified = int(summary[verified_key])
if first is None:
return {
"front": name,
"task_count": task_count,
"external_verified_tasks": verified,
"open_tasks": task_count - verified,
"can_claim_closure": bool(summary[claim_key]),
"production_tuning_allowed": bool(summary.get("production_tuning_allowed", False)),
"first_priority": None,
}
missing_fields = first.get("missing_fields", []) missing_fields = first.get("missing_fields", [])
return { return {
"front": name, "front": name,
@@ -120,7 +130,7 @@ def build_dashboard(dasha_oracle_file: str, tajika_oracle_file: str) -> dict[str
"apply_command": front["first_priority"]["apply_command"], "apply_command": front["first_priority"]["apply_command"],
} }
for front in fronts.values() for front in fronts.values()
if not front["can_claim_closure"] if not front["can_claim_closure"] and front["first_priority"] is not None
], ],
key=lambda item: item["missing_field_count"], key=lambda item: item["missing_field_count"],
) )
@@ -167,6 +177,12 @@ def render_markdown(report: dict[str, Any]) -> str:
for key in ["dasha", "tajika_sahams", "shadbala"]: for key in ["dasha", "tajika_sahams", "shadbala"]:
front = report["fronts"][key] front = report["fronts"][key]
first = front["first_priority"] first = front["first_priority"]
if first is None:
lines.append(
f"| `{key}` | {front['task_count']} | {front['external_verified_tasks']} | `complete` | "
"0 | 0 | 0 | 0 |"
)
continue
missing_groups = first.get("missing_groups", {}) missing_groups = first.get("missing_groups", {})
manual_fill_plan = first.get("manual_fill_plan", {}) manual_fill_plan = first.get("manual_fill_plan", {})
lines.append( lines.append(
+1 -1
View File
@@ -111,7 +111,7 @@ def build_dashboard(oracle_file: str) -> dict[str, Any]:
}, },
"global_first_gap": global_first_gap, "global_first_gap": global_first_gap,
"next_actions": [ "next_actions": [
"Fill the next open external JHora/PyJHora packet under references/oracle/artifacts/pending_packets.", "Fill the next open Tajika/Sahams or Shadbala external packet under references/oracle/artifacts/pending_packets.",
"Run oracle_evidence_validator.py until at least one packet is valid.", "Run oracle_evidence_validator.py until at least one packet is valid.",
"Run oracle_boundary_audit.py to inspect Dasha/Shadbala deltas without tuning constants.", "Run oracle_boundary_audit.py to inspect Dasha/Shadbala deltas without tuning constants.",
"Publish this dashboard after each validated sample batch.", "Publish this dashboard after each validated sample batch.",
+31 -41
View File
@@ -29,7 +29,7 @@ def run_status(*args: str) -> subprocess.CompletedProcess[str]:
) )
def test_dasha_oracle_closure_status_identifies_first_shortest_packet() -> None: def test_dasha_oracle_closure_status_reports_current_dasha_closure() -> None:
completed = run_status("--format", "json") completed = run_status("--format", "json")
assert completed.returncode == 0, completed.stderr or completed.stdout assert completed.returncode == 0, completed.stderr or completed.stdout
@@ -37,21 +37,9 @@ def test_dasha_oracle_closure_status_identifies_first_shortest_packet() -> None:
assert report["scope"] == "dasha_external_oracle_closure_status" assert report["scope"] == "dasha_external_oracle_closure_status"
assert report["schema_version"] == 1 assert report["schema_version"] == 1
assert report["summary"]["dasha_task_count"] == 3 assert report["summary"]["dasha_task_count"] == 3
assert report["summary"]["external_verified_dasha_tasks"] == 2 assert report["summary"]["external_verified_dasha_tasks"] == 3
assert report["summary"]["can_claim_dasha_oracle_closure"] is False assert report["summary"]["can_claim_dasha_oracle_closure"] is True
assert report["first_priority"]["case_id"] == "template_historical_epoch_lahiri" assert report["first_priority"] is None
assert report["first_priority"]["capture_id"] == "external_template_historical_epoch_lahiri"
assert report["first_priority"]["required_target_fields"] == ["target.vimshottari_start_date"]
assert "metadata.tool_name" in report["first_priority"]["missing_fields"]
assert "target.vimshottari_start_date" in report["first_priority"]["missing_fields"]
assert report["first_priority"]["missing_groups"]["metadata"]["count"] == 5
assert report["first_priority"]["missing_groups"]["target"]["count"] == 1
assert report["first_priority"]["prefilled_fields"]["metadata"]["ayanamsa"] == "lahiri"
assert report["first_priority"]["prefilled_fields"]["metadata"]["timezone"] == 5.5
assert report["first_priority"]["manual_fill_plan"]["status_value"] == "external_verified"
assert report["first_priority"]["manual_fill_plan"]["manual_entry_count"] == 6
assert report["first_priority"]["apply_command"]
assert report["first_priority"]["validate_command"]
def test_dasha_oracle_closure_status_markdown_can_be_written(tmp_path: Path) -> None: def test_dasha_oracle_closure_status_markdown_can_be_written(tmp_path: Path) -> None:
@@ -62,29 +50,19 @@ def test_dasha_oracle_closure_status_markdown_can_be_written(tmp_path: Path) ->
assert output.exists() assert output.exists()
markdown = output.read_text(encoding="utf-8") markdown = output.read_text(encoding="utf-8")
assert "# Dasha External Oracle Closure Status" in markdown assert "# Dasha External Oracle Closure Status" in markdown
assert "can_claim_dasha_oracle_closure: `false`" in markdown assert "can_claim_dasha_oracle_closure: `true`" in markdown
assert "external_template_historical_epoch_lahiri" in markdown assert "none: Dasha-only external oracle closure is complete" in markdown
assert "target.vimshottari_start_date" in markdown assert "Keep global calibration blocked" in markdown
assert "## Missing Summary" in markdown
assert "## Prefilled Fields" in markdown
assert "## Manual Fill Plan" in markdown
def test_dasha_oracle_closure_status_advances_after_first_packet_is_filled(tmp_path: Path) -> None: def test_dasha_oracle_closure_status_advances_after_first_packet_is_filled(tmp_path: Path) -> None:
oracle_file = tmp_path / "oracle_cases.json" queue_file = tmp_path / "queue.json"
oracle_file.write_text( queue_completed = subprocess.run(
(ROOT / "references/oracle/dasha_shadbala_oracle_cases.json").read_text(encoding="utf-8"),
encoding="utf-8",
)
packet = ROOT / "references/oracle/artifacts/pending_packets/external_template_steve_jobs_dasha_lahiri_pyjhora_20260627.json"
apply_completed = subprocess.run(
[ [
sys.executable, sys.executable,
"scripts/oracle_collection_queue.py", "scripts/oracle_collection_queue.py",
"--oracle-file", "--oracle-file",
str(oracle_file), "references/oracle/dasha_shadbala_oracle_cases.json",
"--apply-packet",
str(packet),
"--format", "--format",
"json", "json",
], ],
@@ -94,16 +72,15 @@ def test_dasha_oracle_closure_status_advances_after_first_packet_is_filled(tmp_p
timeout=60, timeout=60,
check=False, check=False,
) )
assert apply_completed.returncode == 0, apply_completed.stderr or apply_completed.stdout assert queue_completed.returncode == 0, queue_completed.stderr or queue_completed.stdout
queue_file.write_text(queue_completed.stdout, encoding="utf-8")
completed = subprocess.run( completed = subprocess.run(
[ [
sys.executable, sys.executable,
"scripts/dasha_oracle_closure_status.py", "scripts/dasha_oracle_evidence_validator.py",
"--oracle-file", "--queue-file",
str(oracle_file), str(queue_file),
"--format",
"json",
], ],
cwd=ROOT, cwd=ROOT,
text=True, text=True,
@@ -114,6 +91,19 @@ def test_dasha_oracle_closure_status_advances_after_first_packet_is_filled(tmp_p
assert completed.returncode == 0, completed.stderr or completed.stdout assert completed.returncode == 0, completed.stderr or completed.stdout
report = json.loads(completed.stdout) report = json.loads(completed.stdout)
assert report["summary"]["external_verified_dasha_tasks"] == 2 assert report["summary"]["valid_dasha_packets"] == 3
assert report["first_priority"]["case_id"] == "template_historical_epoch_lahiri" assert report["summary"]["all_dasha_packets_external_verified"] is True
assert report["first_priority"]["missing_fields"]
def test_dasha_oracle_closure_status_has_no_first_priority_after_all_dasha_packets_are_filled() -> None:
completed = run_status("--format", "json")
assert completed.returncode == 0, completed.stderr or completed.stdout
report = json.loads(completed.stdout)
assert report["summary"]["external_verified_dasha_tasks"] == 3
assert report["summary"]["can_claim_dasha_oracle_closure"] is True
assert report["first_priority"] is None
assert report["next_actions"] == [
"Dasha-only external oracle closure is complete for the current target set.",
"Keep global calibration blocked until Shadbala and other non-Dasha oracle packets pass validation.",
]
+7 -12
View File
@@ -39,25 +39,20 @@ def test_oracle_closure_master_dashboard_aggregates_all_hard_fronts() -> None:
assert report["scope"] == "jyotish_external_oracle_closure_master_dashboard" assert report["scope"] == "jyotish_external_oracle_closure_master_dashboard"
assert report["schema_version"] == 1 assert report["schema_version"] == 1
assert report["summary"]["total_tasks"] == 12 assert report["summary"]["total_tasks"] == 12
assert report["summary"]["external_verified_tasks"] == 2 assert report["summary"]["external_verified_tasks"] == 3
assert report["summary"]["open_tasks"] == 10 assert report["summary"]["open_tasks"] == 9
assert report["summary"]["can_claim_global_oracle_closure"] is False assert report["summary"]["can_claim_global_oracle_closure"] is False
assert report["fronts"]["dasha"]["task_count"] == 3 assert report["fronts"]["dasha"]["task_count"] == 3
assert report["fronts"]["shadbala"]["task_count"] == 4 assert report["fronts"]["shadbala"]["task_count"] == 4
assert report["fronts"]["tajika_sahams"]["task_count"] == 5 assert report["fronts"]["tajika_sahams"]["task_count"] == 5
assert report["fronts"]["dasha"]["external_verified_tasks"] == 2 assert report["fronts"]["dasha"]["external_verified_tasks"] == 3
assert report["fronts"]["dasha"]["first_priority"]["case_id"] == "template_historical_epoch_lahiri" assert report["fronts"]["dasha"]["first_priority"] is None
assert report["fronts"]["shadbala"]["first_priority"]["case_id"] == "template_redacted_place_shadbala_raman" assert report["fronts"]["shadbala"]["first_priority"]["case_id"] == "template_redacted_place_shadbala_raman"
assert report["fronts"]["tajika_sahams"]["first_priority"]["case_id"] == "template_steve_jobs_varshaphala_1984_lahiri" assert report["fronts"]["tajika_sahams"]["first_priority"]["case_id"] == "template_steve_jobs_varshaphala_1984_lahiri"
assert report["fronts"]["dasha"]["first_priority"]["missing_groups"]["metadata"]["count"] == 5
assert report["fronts"]["dasha"]["first_priority"]["manual_fill_plan"]["manual_entry_count"] == 6
assert report["fronts"]["tajika_sahams"]["first_priority"]["missing_groups"]["target"]["count"] == 10 assert report["fronts"]["tajika_sahams"]["first_priority"]["missing_groups"]["target"]["count"] == 10
assert report["fronts"]["shadbala"]["first_priority"]["manual_fill_plan"]["manual_entry_count"] == 55 assert report["fronts"]["shadbala"]["first_priority"]["manual_fill_plan"]["manual_entry_count"] == 55
assert report["next_action_order"][0]["front"] == "dasha" assert report["next_action_order"][0]["front"] == "tajika_sahams"
assert report["next_action_order"][0]["missing_field_count"] == 6 assert report["next_action_order"][1]["front"] == "shadbala"
assert report["next_action_order"][0]["manual_entry_count"] == 6
assert report["next_action_order"][1]["front"] == "tajika_sahams"
assert report["next_action_order"][2]["front"] == "shadbala"
def test_oracle_closure_master_dashboard_markdown_can_be_written(tmp_path: Path) -> None: def test_oracle_closure_master_dashboard_markdown_can_be_written(tmp_path: Path) -> None:
@@ -70,7 +65,7 @@ def test_oracle_closure_master_dashboard_markdown_can_be_written(tmp_path: Path)
assert "# Jyotish External Oracle Closure Master Dashboard" in markdown assert "# Jyotish External Oracle Closure Master Dashboard" in markdown
assert "total_tasks: `12`" in markdown assert "total_tasks: `12`" in markdown
assert "can_claim_global_oracle_closure: `false`" in markdown assert "can_claim_global_oracle_closure: `false`" in markdown
assert "template_historical_epoch_lahiri" in markdown assert "`dasha` | 3 | 3 | `complete`" in markdown
assert "template_redacted_place_shadbala_raman" in markdown assert "template_redacted_place_shadbala_raman" in markdown
assert "template_steve_jobs_varshaphala_1984_lahiri" in markdown assert "template_steve_jobs_varshaphala_1984_lahiri" in markdown
assert "manual entries" in markdown assert "manual entries" in markdown
+2 -2
View File
@@ -42,10 +42,10 @@ def test_public_benchmark_dashboard_outputs_stable_json_summary() -> None:
assert report["oracle_readiness"]["valid_packets"] == 0 assert report["oracle_readiness"]["valid_packets"] == 0
assert report["oracle_readiness"]["ready_for_calibration"] == 0 assert report["oracle_readiness"]["ready_for_calibration"] == 0
assert report["oracle_readiness"]["production_tuning_allowed"] is False assert report["oracle_readiness"]["production_tuning_allowed"] is False
assert report["dasha_oracle_readiness"]["valid_dasha_packets"] == 2 assert report["dasha_oracle_readiness"]["valid_dasha_packets"] == 3
assert report["dasha_oracle_readiness"]["total_dasha_packets"] == 3 assert report["dasha_oracle_readiness"]["total_dasha_packets"] == 3
assert report["boundary_audit"]["production_tuning_recommended"] is False assert report["boundary_audit"]["production_tuning_recommended"] is False
assert "Dasha-only external oracle readiness is 2/3" in report["global_first_gap"] assert "Dasha-only external oracle readiness is 3/3" in report["global_first_gap"]
assert report["public_claim"]["can_claim_global_first"] is False assert report["public_claim"]["can_claim_global_first"] is False
assert report["public_claim"]["reason"] assert report["public_claim"]["reason"]
+6 -1
View File
@@ -31,7 +31,12 @@ def test_skill_gap_truth_registry_lists_hard_fronts_and_past_corrections() -> No
assert required_fronts <= set(hard_fronts) assert required_fronts <= set(hard_fronts)
for front_id in required_fronts: for front_id in required_fronts:
front = hard_fronts[front_id] front = hard_fronts[front_id]
assert front["status"] in {"blocked_external_evidence", "active_gap", "active_partial_external_evidence"} assert front["status"] in {
"blocked_external_evidence",
"active_gap",
"active_partial_external_evidence",
"active_target_set_closed",
}
assert front["priority"] in {"P0", "P1", "P2"} assert front["priority"] in {"P0", "P1", "P2"}
assert front["completion_standard"] assert front["completion_standard"]
assert front["forbidden_claims"] assert front["forbidden_claims"]