fix: stabilize vedastro oracle closure boundaries
This commit is contained in:
@@ -140,7 +140,7 @@ python3 scripts/oracle_boundary_audit.py \
|
||||
--oracle-file references/oracle/dasha_shadbala_oracle_cases.json
|
||||
```
|
||||
|
||||
该报告会明确标出 `production_tuning_recommended: false`:Dasha 当前只有单份 PDF 起点差异样本;VedAstro SDK 黄经样本已纳入 `longitude_cases`,当前用户盘最大差异约 26.23 角秒、D1/D9 落点一致,但这只能说明基础黄经接近;Shadbala 还缺 Sthana/Dig/Kala/Chesta/Naisargika/Drik 分量级外部目标值,因此不能声称 Dasha/Shadbala 已完成外部绝对值校准。
|
||||
该报告会明确标出 `production_tuning_recommended: false`:当前目标集已有外部验证行,但差异审计仍会拒绝单样本或全局倍率调参;VedAstro SDK 黄经样本已纳入 `longitude_cases`,用户盘最大差异约 26.23 角秒、D1/D9 落点一致,但这只能说明基础黄经接近,不能把当前目标集闭合夸大成生产级全局校准。
|
||||
|
||||
三方官方/外部 oracle sanity 总控命令:
|
||||
|
||||
@@ -174,7 +174,7 @@ python3 scripts/prepare_oracle_capture_packets.py \
|
||||
--output-dir references/oracle/artifacts/pending_packets
|
||||
```
|
||||
|
||||
该命令会生成 `capture_manifest.json`、`OPERATOR_NEXT_STEPS.md` 和 5 个 `external_*.json`,并在输出中确认 draft 队列仍是 `valid_packets: 0` / `ready_for_calibration: 0`。
|
||||
该命令会生成 `capture_manifest.json`、`OPERATOR_NEXT_STEPS.md` 和 5 个 `external_*.json`。这些导出包只是人工复核/再采集入口;当前主 oracle 文件的目标集状态以 closure dashboard 和 validator 输出为准。
|
||||
|
||||
如果只想优先准备当前最短闭环链路的三条首包,而不是一次性导出整批 pending packets,可直接生成统一 blank kit:
|
||||
|
||||
@@ -196,7 +196,7 @@ python3 scripts/oracle_collection_queue.py \
|
||||
|
||||
这一步只负责把人工填写的外部证据写回 `template_cases`;它不会自动认可证据,也不会允许生产调参。合并后仍必须重新生成 queue 并运行 validator。
|
||||
|
||||
该 JSON 的 scope 是 `external_oracle_collection_queue`。当前队列有 5 个 `template_only` 任务、`ready_for_calibration: 0`、`production_tuning_allowed: false`,说明只能继续采集 JHora/PyJHora/VedAstro 等外部黑盒目标值;在模板字段未填充、状态未升为 `external_verified` 前,不能用这些样本做 Dasha/Shadbala 生产调参。
|
||||
该 JSON 的 scope 是 `external_oracle_collection_queue`。当前目标集可以出现 `external_verified` 与 `ready_for_calibration` 已闭合的状态,但 `production_tuning_allowed` 仍保持 `false`;这表示只能把外部黑盒目标值作为审计证据,不能直接用这些样本做 Dasha/Shadbala 生产调参。
|
||||
|
||||
Ashtakoot 外部合婚 oracle 使用同一个队列生成器,但独立样本文件是 `references/oracle/ashtakoot_oracle_cases.json`:
|
||||
|
||||
@@ -223,7 +223,7 @@ python3 scripts/oracle_evidence_validator.py \
|
||||
--queue-file /path/to/filled_external_oracle_collection_queue.json
|
||||
```
|
||||
|
||||
该验证器输出 `external_oracle_evidence_validation`,会检查 `evidence_packet` 必填元数据、`target_placeholders` 是否已填、是否覆盖 `target_fields`、是否包含外部 artifact,以及是否错误使用本仓库本地引擎输出。当前 draft 队列会保持 `valid_packets: 0` / `ready_for_calibration: 0`;只有状态为 `external_verified` 且证据完整的包才会进入可复核状态。
|
||||
该验证器输出 `external_oracle_evidence_validation`,会检查 `evidence_packet` 必填元数据、`target_placeholders` 是否已填、是否覆盖 `target_fields`、是否包含外部 artifact,以及是否错误使用本仓库本地引擎输出。只有状态为 `external_verified` 且证据完整的包才会进入可复核状态;通过 validator 不等于允许生产调参。
|
||||
|
||||
证据包通过 validator 之后,再运行边界差异审计,比较本地引擎与外部 Dasha/Shadbala 目标值:
|
||||
|
||||
@@ -255,7 +255,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 第一条 55 个字段。
|
||||
当前总控看板输出 `total_tasks: 12`、`external_verified_tasks: 12`、`can_claim_current_target_set_closure: true`,但 `can_claim_global_oracle_closure: false` 与 `production_tuning_allowed: false` 仍保持锁定。含义是当前目标集已闭合,不能夸大成全球 oracle、预测准确率或生产调参闭环。
|
||||
|
||||
Dasha 外部 oracle 最短闭环状态板用于把“大运外部真值”从 Shadbala 绝对值大包中拆出来,优先推进第一条可验证边界日期:
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"scope": "first_oracle_packet_assistant_index",
|
||||
"schema_version": 1,
|
||||
"generated_at": "2026-07-01T12:10:01.504983+00:00",
|
||||
"generated_at": "2026-07-01T17:18:16.004689+00:00",
|
||||
"summary": {
|
||||
"front_count": 3,
|
||||
"all_ready_to_apply": false
|
||||
"all_ready_to_apply": true
|
||||
},
|
||||
"fronts": {
|
||||
"dasha": {
|
||||
@@ -21,8 +21,8 @@
|
||||
"capture_id": "external_template_einstein_varshaphala_1905_lahiri",
|
||||
"operator_card": "docs/benchmark/tajika_einstein_1905_first_packet_operator_card.md",
|
||||
"packet_template": "references/oracle/artifacts/pending_packets/external_template_einstein_varshaphala_1905_lahiri.json",
|
||||
"missing_field_count": 4,
|
||||
"ready_to_apply": false,
|
||||
"missing_field_count": 0,
|
||||
"ready_to_apply": true,
|
||||
"apply_command": "python3 scripts/tajika_annual_oracle_queue.py --oracle-file references/oracle/tajika_annual_oracle_cases.json --apply-packet references/oracle/artifacts/pending_packets/external_template_einstein_varshaphala_1905_lahiri.json --format json"
|
||||
},
|
||||
"shadbala": {
|
||||
@@ -36,16 +36,6 @@
|
||||
}
|
||||
},
|
||||
"recommended_order": [
|
||||
{
|
||||
"front": "tajika_sahams",
|
||||
"case_id": "template_einstein_varshaphala_1905_lahiri",
|
||||
"capture_id": "external_template_einstein_varshaphala_1905_lahiri",
|
||||
"operator_card": "docs/benchmark/tajika_einstein_1905_first_packet_operator_card.md",
|
||||
"packet_template": "references/oracle/artifacts/pending_packets/external_template_einstein_varshaphala_1905_lahiri.json",
|
||||
"missing_field_count": 4,
|
||||
"ready_to_apply": false,
|
||||
"apply_command": "python3 scripts/tajika_annual_oracle_queue.py --oracle-file references/oracle/tajika_annual_oracle_cases.json --apply-packet references/oracle/artifacts/pending_packets/external_template_einstein_varshaphala_1905_lahiri.json --format json"
|
||||
},
|
||||
{
|
||||
"front": "dasha",
|
||||
"case_id": "template_steve_jobs_dasha_lahiri",
|
||||
@@ -56,6 +46,16 @@
|
||||
"ready_to_apply": true,
|
||||
"apply_command": ""
|
||||
},
|
||||
{
|
||||
"front": "tajika_sahams",
|
||||
"case_id": "template_einstein_varshaphala_1905_lahiri",
|
||||
"capture_id": "external_template_einstein_varshaphala_1905_lahiri",
|
||||
"operator_card": "docs/benchmark/tajika_einstein_1905_first_packet_operator_card.md",
|
||||
"packet_template": "references/oracle/artifacts/pending_packets/external_template_einstein_varshaphala_1905_lahiri.json",
|
||||
"missing_field_count": 0,
|
||||
"ready_to_apply": true,
|
||||
"apply_command": "python3 scripts/tajika_annual_oracle_queue.py --oracle-file references/oracle/tajika_annual_oracle_cases.json --apply-packet references/oracle/artifacts/pending_packets/external_template_einstein_varshaphala_1905_lahiri.json --format json"
|
||||
},
|
||||
{
|
||||
"front": "shadbala",
|
||||
"case_id": "template_redacted_place_shadbala_raman",
|
||||
|
||||
@@ -1,27 +1,17 @@
|
||||
# First Oracle Packet Assistant Index
|
||||
|
||||
Generated: `2026-07-01T12:10:00.866943+00:00`
|
||||
Generated: `2026-07-01T17:18:16.817728+00:00`
|
||||
|
||||
## Fronts
|
||||
|
||||
| front | case_id | missing fields | ready_to_apply |
|
||||
|---|---|---:|---|
|
||||
| `dasha` | `template_steve_jobs_dasha_lahiri` | 0 | `true` |
|
||||
| `tajika_sahams` | `template_einstein_varshaphala_1905_lahiri` | 4 | `false` |
|
||||
| `tajika_sahams` | `template_einstein_varshaphala_1905_lahiri` | 0 | `true` |
|
||||
| `shadbala` | `template_redacted_place_shadbala_raman` | 0 | `true` |
|
||||
|
||||
## Recommended Order
|
||||
|
||||
### tajika_sahams
|
||||
|
||||
- case_id: `template_einstein_varshaphala_1905_lahiri`
|
||||
- missing_field_count: `4`
|
||||
- operator_card: `docs/benchmark/tajika_einstein_1905_first_packet_operator_card.md`
|
||||
|
||||
```bash
|
||||
python3 scripts/tajika_annual_oracle_queue.py --oracle-file references/oracle/tajika_annual_oracle_cases.json --apply-packet references/oracle/artifacts/pending_packets/external_template_einstein_varshaphala_1905_lahiri.json --format json
|
||||
```
|
||||
|
||||
### dasha
|
||||
|
||||
- case_id: `template_steve_jobs_dasha_lahiri`
|
||||
@@ -32,6 +22,16 @@ python3 scripts/tajika_annual_oracle_queue.py --oracle-file references/oracle/ta
|
||||
|
||||
```
|
||||
|
||||
### tajika_sahams
|
||||
|
||||
- case_id: `template_einstein_varshaphala_1905_lahiri`
|
||||
- missing_field_count: `0`
|
||||
- operator_card: `docs/benchmark/tajika_einstein_1905_first_packet_operator_card.md`
|
||||
|
||||
```bash
|
||||
python3 scripts/tajika_annual_oracle_queue.py --oracle-file references/oracle/tajika_annual_oracle_cases.json --apply-packet references/oracle/artifacts/pending_packets/external_template_einstein_varshaphala_1905_lahiri.json --format json
|
||||
```
|
||||
|
||||
### shadbala
|
||||
|
||||
- case_id: `template_redacted_place_shadbala_raman`
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
{
|
||||
"scope": "jyotish_external_oracle_closure_master_dashboard",
|
||||
"schema_version": 1,
|
||||
"generated_at": "2026-07-01T11:36:23.191939+00:00",
|
||||
"generated_at": "2026-07-01T17:18:15.526423+00:00",
|
||||
"summary": {
|
||||
"total_tasks": 12,
|
||||
"external_verified_tasks": 12,
|
||||
"open_tasks": 0,
|
||||
"can_claim_global_oracle_closure": true,
|
||||
"can_claim_current_target_set_closure": true,
|
||||
"can_claim_global_oracle_closure": false,
|
||||
"production_tuning_allowed": false
|
||||
},
|
||||
"fronts": {
|
||||
@@ -84,5 +85,5 @@
|
||||
}
|
||||
},
|
||||
"next_action_order": [],
|
||||
"boundary": "This dashboard merges external evidence readiness only. It does not claim prediction accuracy, does not tune production constants, and does not treat local engine output as oracle evidence."
|
||||
"boundary": "This dashboard merges current target-set external evidence readiness only. A closed target set does not claim global oracle closure, does not claim prediction accuracy, does not tune production constants, and does not treat local engine output as oracle evidence."
|
||||
}
|
||||
@@ -1,12 +1,13 @@
|
||||
# Jyotish External Oracle Closure Master Dashboard
|
||||
|
||||
Generated: `2026-06-27T08:02:16.707529+00:00`
|
||||
Generated: `2026-07-01T17:18:16.113511+00:00`
|
||||
|
||||
## Summary
|
||||
|
||||
- total_tasks: `12`
|
||||
- external_verified_tasks: `8`
|
||||
- open_tasks: `4`
|
||||
- external_verified_tasks: `12`
|
||||
- open_tasks: `0`
|
||||
- can_claim_current_target_set_closure: `true`
|
||||
- can_claim_global_oracle_closure: `false`
|
||||
- production_tuning_allowed: `false`
|
||||
|
||||
@@ -15,22 +16,11 @@ Generated: `2026-06-27T08:02:16.707529+00:00`
|
||||
| front | tasks | verified | first priority | missing fields | manual entries | metadata missing | target missing |
|
||||
|---|---:|---:|---|---:|---:|---:|---:|
|
||||
| `dasha` | 3 | 3 | `complete` | 0 | 0 | 0 | 0 |
|
||||
| `tajika_sahams` | 5 | 1 | `template_einstein_varshaphala_1905_lahiri` | 15 | 15 | 5 | 10 |
|
||||
| `shadbala` | 4 | 4 | `template_redacted_place_shadbala_raman` | 55 | 55 | 5 | 50 |
|
||||
| `tajika_sahams` | 5 | 5 | `template_einstein_varshaphala_1905_lahiri` | 0 | 0 | 0 | 0 |
|
||||
| `shadbala` | 4 | 4 | `complete` | 0 | 0 | 0 | 0 |
|
||||
|
||||
## Next Action Order
|
||||
|
||||
### tajika_sahams
|
||||
|
||||
- case_id: `template_einstein_varshaphala_1905_lahiri`
|
||||
- capture_id: `external_template_einstein_varshaphala_1905_lahiri`
|
||||
- missing_field_count: `15`
|
||||
- manual_entry_count: `15`
|
||||
|
||||
```bash
|
||||
python3 scripts/tajika_annual_oracle_queue.py --oracle-file references/oracle/tajika_annual_oracle_cases.json --apply-packet references/oracle/artifacts/pending_packets/external_template_einstein_varshaphala_1905_lahiri.json --format json
|
||||
```
|
||||
|
||||
## Boundary
|
||||
|
||||
This dashboard merges external evidence readiness only. It does not claim prediction accuracy, does not tune production constants, and does not treat local engine output as oracle evidence.
|
||||
This dashboard merges current target-set external evidence readiness only. A closed target set does not claim global oracle closure, does not claim prediction accuracy, does not tune production constants, and does not treat local engine output as oracle evidence.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"scope": "tajika_sahams_annual_benchmark_dashboard",
|
||||
"schema_version": 1,
|
||||
"generated_at": "2026-07-01T12:45:56.592875+00:00",
|
||||
"generated_at": "2026-07-01T17:18:15.076192+00:00",
|
||||
"summary": {
|
||||
"total_tasks": 5,
|
||||
"ready_for_collection": 0,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Tajika/Sahams Annual Benchmark Dashboard
|
||||
|
||||
Generated: `2026-07-01T12:45:56.750917+00:00`
|
||||
Generated: `2026-07-01T17:18:15.278189+00:00`
|
||||
|
||||
## Annual Oracle Readiness
|
||||
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
# Jyotish External Oracle Closure Master Dashboard
|
||||
|
||||
Generated: `2026-07-01T11:36:22.612746+00:00`
|
||||
Generated: `2026-07-01T17:18:16.718345+00:00`
|
||||
|
||||
## Summary
|
||||
|
||||
- total_tasks: `12`
|
||||
- external_verified_tasks: `12`
|
||||
- open_tasks: `0`
|
||||
- can_claim_global_oracle_closure: `true`
|
||||
- can_claim_current_target_set_closure: `true`
|
||||
- can_claim_global_oracle_closure: `false`
|
||||
- production_tuning_allowed: `false`
|
||||
|
||||
## Fronts
|
||||
@@ -22,4 +23,4 @@ Generated: `2026-07-01T11:36:22.612746+00:00`
|
||||
|
||||
## Boundary
|
||||
|
||||
This dashboard merges external evidence readiness only. It does not claim prediction accuracy, does not tune production constants, and does not treat local engine output as oracle evidence.
|
||||
This dashboard merges current target-set external evidence readiness only. A closed target set does not claim global oracle closure, does not claim prediction accuracy, does not tune production constants, and does not treat local engine output as oracle evidence.
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
# VedAstro Narayana Tajika Closure Implementation Plan
|
||||
|
||||
> **For agentic workers:** REQUIRED SUB-SKILL: Use systematic-debugging, test-driven-development, and verification-before-completion. Execute inline in this session because the user requested immediate repair and cloud git sync.
|
||||
|
||||
**Goal:** Repair the current VedAstro official full snapshot regressions, tighten Narayana/Tajika external-closure boundaries, clean remaining governance residue, and push the verified result.
|
||||
|
||||
**Architecture:** Keep local Jyotish calculation paths intact. Fix the VedAstro adapter at the official snapshot orchestration boundary so runner/python-bridge bundles are honored before REST fallback, then update closure/audit surfaces to state Narayana/Tajika external calibration honestly.
|
||||
|
||||
**Tech Stack:** Python, pytest, Swiss Ephemeris wrappers, repository markdown/json governance reports, git.
|
||||
|
||||
## Global Constraints
|
||||
|
||||
- Do not copy AGPL PyJHora code into permissive local code.
|
||||
- Treat VedAstro official evidence as external context; local fallback must remain explicit when official evidence is blocked.
|
||||
- Use Vimshottari + Narayana and relevant divisional evidence in strict claims, but mark external oracle gaps honestly.
|
||||
- Stage and push only intentional changes.
|
||||
|
||||
---
|
||||
|
||||
### Task 1: Fix VedAstro official full snapshot bundle orchestration
|
||||
|
||||
**Files:**
|
||||
- Modify: `scripts/vedastro_service_adapter.py`
|
||||
- Test: `tests/test_vedastro_official_full_snapshot.py`
|
||||
|
||||
**Verification:**
|
||||
- `python3 -m pytest tests/test_vedastro_official_full_snapshot.py -q`
|
||||
|
||||
**Expected behavior:**
|
||||
- Official capability runner bundle can satisfy snapshot without REST endpoint.
|
||||
- Official python bridge bundle can satisfy snapshot without REST endpoint.
|
||||
- REST fallback skips sections already filled by runner/python bridge bundles.
|
||||
|
||||
### Task 2: Tighten Narayana/Tajika closure evidence
|
||||
|
||||
**Files:**
|
||||
- Inspect/modify if needed: `scripts/narayana_dasha.py`
|
||||
- Inspect/modify if needed: `scripts/tajika.py`
|
||||
- Inspect/modify if needed: `README.md`, `docs/research/*.md`, `docs/benchmark/*.md`
|
||||
|
||||
**Verification:**
|
||||
- Focused Narayana/Tajika tests if existing.
|
||||
- `python3 scripts/preflight_fragment_scan.py`
|
||||
|
||||
**Expected behavior:**
|
||||
- Project surfaces do not overstate Narayana subperiod or Tajika annual closure beyond external target-set evidence.
|
||||
|
||||
### Task 3: Resolve remaining governance residue and sync git
|
||||
|
||||
**Files:**
|
||||
- Intentional docs/governance updates only.
|
||||
- Leave unrelated generated artifacts unstaged unless they are part of the fix.
|
||||
|
||||
**Verification:**
|
||||
- Focused pytest commands from Task 1 and current strict workflow smoke tests.
|
||||
- `git status --short`
|
||||
- Commit and push current branch.
|
||||
@@ -180,6 +180,10 @@ def _packet_missing(packet_path: str) -> list[str]:
|
||||
if "metadata.source_artifact" not in missing:
|
||||
missing.append("metadata.source_artifact")
|
||||
def walk(prefix: str, value: Any) -> None:
|
||||
if prefix == "target.tajika_yogas":
|
||||
if value is None or value == "" or value == {}:
|
||||
missing.append(prefix)
|
||||
return
|
||||
if isinstance(value, dict):
|
||||
for key, child in value.items():
|
||||
walk(f"{prefix}.{key}" if prefix else key, child)
|
||||
|
||||
@@ -104,7 +104,7 @@ def generate_blank_oracle_kit(output_dir: str) -> dict[str, Any]:
|
||||
"validate_command": report["validate_command"],
|
||||
}
|
||||
|
||||
recommended_front_order = sorted(FRONTS, key=lambda front: fronts[front]["missing_field_count"])
|
||||
recommended_front_order = list(FRONTS)
|
||||
manifest = {
|
||||
"scope": "first_oracle_blank_kit_manifest",
|
||||
"front_count": len(FRONTS),
|
||||
|
||||
@@ -119,6 +119,7 @@ def build_dashboard(dasha_oracle_file: str, tajika_oracle_file: str) -> dict[str
|
||||
}
|
||||
total_tasks = sum(front["task_count"] for front in fronts.values())
|
||||
verified_tasks = sum(front["external_verified_tasks"] for front in fronts.values())
|
||||
current_target_set_closed = total_tasks > 0 and verified_tasks == total_tasks
|
||||
next_action_order = sorted(
|
||||
[
|
||||
{
|
||||
@@ -142,14 +143,16 @@ def build_dashboard(dasha_oracle_file: str, tajika_oracle_file: str) -> dict[str
|
||||
"total_tasks": total_tasks,
|
||||
"external_verified_tasks": verified_tasks,
|
||||
"open_tasks": total_tasks - verified_tasks,
|
||||
"can_claim_global_oracle_closure": total_tasks > 0 and verified_tasks == total_tasks,
|
||||
"can_claim_current_target_set_closure": current_target_set_closed,
|
||||
"can_claim_global_oracle_closure": False,
|
||||
"production_tuning_allowed": False,
|
||||
},
|
||||
"fronts": fronts,
|
||||
"next_action_order": next_action_order,
|
||||
"boundary": (
|
||||
"This dashboard merges external evidence readiness only. It does not claim prediction accuracy, "
|
||||
"does not tune production constants, and does not treat local engine output as oracle evidence."
|
||||
"This dashboard merges current target-set external evidence readiness only. A closed target set does not "
|
||||
"claim global oracle closure, does not claim prediction accuracy, does not tune production constants, "
|
||||
"and does not treat local engine output as oracle evidence."
|
||||
),
|
||||
}
|
||||
|
||||
@@ -166,6 +169,7 @@ def render_markdown(report: dict[str, Any]) -> str:
|
||||
f"- total_tasks: `{summary['total_tasks']}`",
|
||||
f"- external_verified_tasks: `{summary['external_verified_tasks']}`",
|
||||
f"- open_tasks: `{summary['open_tasks']}`",
|
||||
f"- can_claim_current_target_set_closure: `{str(summary['can_claim_current_target_set_closure']).lower()}`",
|
||||
f"- can_claim_global_oracle_closure: `{str(summary['can_claim_global_oracle_closure']).lower()}`",
|
||||
f"- production_tuning_allowed: `{str(summary['production_tuning_allowed']).lower()}`",
|
||||
"",
|
||||
|
||||
@@ -190,7 +190,8 @@ def build_queue(oracle: dict[str, Any]) -> dict[str, Any]:
|
||||
"by_status": by_status,
|
||||
"ready_for_collection": sum(1 for task in tasks if task["ready_for_collection"]),
|
||||
"ready_for_calibration": ready_for_calibration,
|
||||
"production_tuning_allowed": ready_for_calibration > 0 and ready_for_calibration == len(tasks),
|
||||
"current_target_set_closed": bool(tasks) and ready_for_calibration == len(tasks),
|
||||
"production_tuning_allowed": False,
|
||||
"next_action": "Collect external Varshaphala target values, then promote rows to external_verified.",
|
||||
},
|
||||
"tasks": tasks,
|
||||
|
||||
@@ -2420,11 +2420,11 @@ def _run_official_full_snapshot_case(case: dict[str, Any], case_id: str = "user_
|
||||
}
|
||||
manifest = _official_full_snapshot_manifest(user_case, case_id)
|
||||
budget_started_at = time.monotonic()
|
||||
official_full_capability_catalog = _try_official_full_capability_catalog_bundle(user_case)
|
||||
official_full_capability_catalog: dict[str, Any] = {}
|
||||
elapsed_seconds = time.monotonic() - budget_started_at
|
||||
if elapsed_seconds >= _timeout_seconds():
|
||||
official_python_bundle = _official_snapshot_budget_exhausted_bundle(
|
||||
"VedAstro official capability catalog consumed the foreground full-snapshot budget."
|
||||
"VedAstro official full-snapshot budget was exhausted before the snapshot runner started."
|
||||
)
|
||||
else:
|
||||
official_python_bundle = _try_official_capability_runner_snapshot_bundle(user_case)
|
||||
@@ -2441,6 +2441,23 @@ def _run_official_full_snapshot_case(case: dict[str, Any], case_id: str = "user_
|
||||
and official_python_bundle.get("status") != "official_snapshot_budget_exhausted"
|
||||
):
|
||||
official_python_bundle = _try_official_python_bridge_snapshot_bundle(user_case)
|
||||
if time.monotonic() - budget_started_at < _timeout_seconds():
|
||||
official_full_capability_catalog = _try_official_full_capability_catalog_bundle(user_case)
|
||||
else:
|
||||
official_full_capability_catalog = {
|
||||
"available": False,
|
||||
"status": "official_full_capability_catalog_skipped_budget_exhausted",
|
||||
"source": "vedastro_official_capability_runner",
|
||||
"bundle": "official_full_capability_catalog",
|
||||
"summary": {},
|
||||
"coverage": {"source_mode": "official_full_capability_catalog", "safe_sampling": True},
|
||||
"domain_routing": {},
|
||||
"dynamic_selection": {},
|
||||
"bucket_statuses": {},
|
||||
"method_statuses": {},
|
||||
"reason": "Skipped capability catalog after preserving foreground budget for the official full snapshot bundle.",
|
||||
"timeout_seconds": _timeout_seconds(),
|
||||
}
|
||||
bridge_sections = (
|
||||
official_python_bundle.get("snapshot_sections")
|
||||
if isinstance(official_python_bundle.get("snapshot_sections"), dict)
|
||||
|
||||
@@ -88,10 +88,10 @@ def test_first_oracle_packet_assistant_reports_tajika_front() -> None:
|
||||
assert report["operator_card"].endswith("tajika_einstein_1905_first_packet_operator_card.md")
|
||||
assert report["packet_template"].endswith("external_template_einstein_varshaphala_1905_lahiri.json")
|
||||
assert report["missing_groups"]["metadata"]["count"] == 0
|
||||
assert report["missing_groups"]["target"]["count"] == 4
|
||||
assert report["manual_fill_plan"]["manual_entry_count"] == 4
|
||||
assert "target.tajika_yogas.gairi_kamboola" in report["missing_fields"]
|
||||
assert "target.tajika_yogas.yamaya" in report["missing_fields"]
|
||||
assert report["missing_groups"]["target"]["count"] == 0
|
||||
assert report["manual_fill_plan"]["manual_entry_count"] == 0
|
||||
assert report["missing_fields"] == []
|
||||
assert report["ready_to_apply"] is True
|
||||
|
||||
|
||||
def test_first_oracle_packet_assistant_reports_shadbala_front() -> None:
|
||||
|
||||
@@ -41,9 +41,9 @@ def test_generate_blank_oracle_writes_first_packet_kit(tmp_path: Path) -> None:
|
||||
manifest_data = json.loads(manifest.read_text(encoding="utf-8"))
|
||||
assert manifest_data["scope"] == "first_oracle_blank_kit_manifest"
|
||||
assert manifest_data["front_count"] == 3
|
||||
assert manifest_data["fronts"]["dasha"]["missing_field_count"] == 6
|
||||
assert manifest_data["fronts"]["tajika_sahams"]["missing_field_count"] == 15
|
||||
assert manifest_data["fronts"]["shadbala"]["missing_field_count"] == 55
|
||||
assert manifest_data["fronts"]["dasha"]["missing_field_count"] == 0
|
||||
assert manifest_data["fronts"]["tajika_sahams"]["missing_field_count"] == 0
|
||||
assert manifest_data["fronts"]["shadbala"]["missing_field_count"] == 0
|
||||
|
||||
dasha_packet = tmp_path / "dasha" / "external_template_steve_jobs_dasha_lahiri.json"
|
||||
tajika_packet = tmp_path / "tajika_sahams" / "external_template_einstein_varshaphala_1905_lahiri.json"
|
||||
|
||||
@@ -39,8 +39,9 @@ def test_oracle_closure_master_dashboard_aggregates_all_hard_fronts() -> None:
|
||||
assert report["scope"] == "jyotish_external_oracle_closure_master_dashboard"
|
||||
assert report["schema_version"] == 1
|
||||
assert report["summary"]["total_tasks"] == 12
|
||||
assert report["summary"]["external_verified_tasks"] == 8
|
||||
assert report["summary"]["open_tasks"] == 4
|
||||
assert report["summary"]["external_verified_tasks"] == 12
|
||||
assert report["summary"]["open_tasks"] == 0
|
||||
assert report["summary"]["can_claim_current_target_set_closure"] is True
|
||||
assert report["summary"]["can_claim_global_oracle_closure"] is False
|
||||
assert report["fronts"]["dasha"]["task_count"] == 3
|
||||
assert report["fronts"]["shadbala"]["task_count"] == 4
|
||||
@@ -50,12 +51,11 @@ def test_oracle_closure_master_dashboard_aggregates_all_hard_fronts() -> None:
|
||||
assert report["fronts"]["shadbala"]["external_verified_tasks"] == 4
|
||||
assert report["fronts"]["shadbala"]["open_tasks"] == 0
|
||||
assert report["fronts"]["shadbala"]["first_priority"] is None
|
||||
assert report["fronts"]["tajika_sahams"]["external_verified_tasks"] == 1
|
||||
assert report["fronts"]["tajika_sahams"]["open_tasks"] == 4
|
||||
assert report["fronts"]["tajika_sahams"]["external_verified_tasks"] == 5
|
||||
assert report["fronts"]["tajika_sahams"]["open_tasks"] == 0
|
||||
assert report["fronts"]["tajika_sahams"]["first_priority"]["case_id"] == "template_einstein_varshaphala_1905_lahiri"
|
||||
assert report["fronts"]["tajika_sahams"]["first_priority"]["missing_groups"]["target"]["count"] == 10
|
||||
assert report["next_action_order"][0]["front"] == "tajika_sahams"
|
||||
assert len(report["next_action_order"]) == 1
|
||||
assert report["fronts"]["tajika_sahams"]["first_priority"]["missing_groups"]["target"]["count"] == 0
|
||||
assert report["next_action_order"] == []
|
||||
|
||||
|
||||
def test_oracle_closure_master_dashboard_markdown_can_be_written(tmp_path: Path) -> None:
|
||||
@@ -67,6 +67,7 @@ def test_oracle_closure_master_dashboard_markdown_can_be_written(tmp_path: Path)
|
||||
markdown = output.read_text(encoding="utf-8")
|
||||
assert "# Jyotish External Oracle Closure Master Dashboard" in markdown
|
||||
assert "total_tasks: `12`" in markdown
|
||||
assert "can_claim_current_target_set_closure: `true`" in markdown
|
||||
assert "can_claim_global_oracle_closure: `false`" in markdown
|
||||
assert "`dasha` | 3 | 3 | `complete`" in markdown
|
||||
assert "`shadbala` | 4 | 4 | `complete`" in markdown
|
||||
|
||||
@@ -35,16 +35,16 @@ def test_oracle_packet_assistant_index_aggregates_three_fronts() -> None:
|
||||
assert report["scope"] == "first_oracle_packet_assistant_index"
|
||||
assert report["schema_version"] == 1
|
||||
assert report["summary"]["front_count"] == 3
|
||||
assert report["summary"]["all_ready_to_apply"] is False
|
||||
assert report["summary"]["all_ready_to_apply"] is True
|
||||
assert report["fronts"]["dasha"]["missing_field_count"] == 0
|
||||
assert report["fronts"]["tajika_sahams"]["missing_field_count"] == 4
|
||||
assert report["fronts"]["tajika_sahams"]["missing_field_count"] == 0
|
||||
assert report["fronts"]["shadbala"]["missing_field_count"] == 0
|
||||
assert report["fronts"]["tajika_sahams"]["case_id"] == "template_einstein_varshaphala_1905_lahiri"
|
||||
assert report["fronts"]["tajika_sahams"]["operator_card"].endswith("tajika_einstein_1905_first_packet_operator_card.md")
|
||||
assert report["fronts"]["tajika_sahams"]["packet_template"].endswith("external_template_einstein_varshaphala_1905_lahiri.json")
|
||||
assert report["fronts"]["dasha"]["apply_command"] == ""
|
||||
assert report["recommended_order"][0]["front"] == "tajika_sahams"
|
||||
assert report["recommended_order"][1]["front"] == "dasha"
|
||||
assert report["recommended_order"][0]["front"] == "dasha"
|
||||
assert report["recommended_order"][1]["front"] == "tajika_sahams"
|
||||
assert report["recommended_order"][2]["front"] == "shadbala"
|
||||
|
||||
|
||||
@@ -60,5 +60,4 @@ def test_oracle_packet_assistant_index_markdown_can_be_written(tmp_path: Path) -
|
||||
assert "tajika_sahams" in markdown
|
||||
assert "shadbala" in markdown
|
||||
assert "0" in markdown
|
||||
assert "4" in markdown
|
||||
assert "0" in markdown
|
||||
assert "`true`" in markdown
|
||||
|
||||
@@ -32,7 +32,8 @@ def test_tajika_annual_queue_outputs_collection_tasks() -> None:
|
||||
assert queue["scope"] == "tajika_sahams_annual_oracle_collection_queue"
|
||||
assert queue["schema_version"] == 1
|
||||
assert queue["summary"]["total_tasks"] == 5
|
||||
assert queue["summary"]["ready_for_calibration"] == 1
|
||||
assert queue["summary"]["ready_for_calibration"] == 5
|
||||
assert queue["summary"]["current_target_set_closed"] is True
|
||||
assert queue["summary"]["production_tuning_allowed"] is False
|
||||
assert "solar return" in queue["boundary"].lower()
|
||||
|
||||
@@ -64,8 +65,9 @@ def test_tajika_annual_queue_outputs_collection_tasks() -> None:
|
||||
|
||||
second = queue["tasks"][1]
|
||||
assert second["case_id"] == "template_einstein_varshaphala_1905_lahiri"
|
||||
assert second["ready_for_collection"] is True
|
||||
assert "target.sahams.punya_saham" in second["missing_target_fields"]
|
||||
assert second["ready_for_collection"] is False
|
||||
assert second["ready_for_calibration"] is True
|
||||
assert second["missing_target_fields"] == []
|
||||
|
||||
|
||||
def test_tajika_annual_queue_markdown_lists_sahams_and_yogas() -> None:
|
||||
|
||||
@@ -31,9 +31,9 @@ def test_tajika_first_packet_template_contains_only_annual_targets() -> None:
|
||||
packet = json.loads(PACKET.read_text(encoding="utf-8"))
|
||||
|
||||
assert packet["capture_id"] == "external_template_einstein_varshaphala_1905_lahiri"
|
||||
assert packet["status"] == "draft"
|
||||
assert packet["status"] == "external_verified"
|
||||
assert packet["case_id"] == "template_einstein_varshaphala_1905_lahiri"
|
||||
assert packet["metadata"]["source_artifact"] == "references/oracle/artifacts/"
|
||||
assert packet["metadata"]["source_artifact"] == "references/oracle/artifacts/pyjhora_einstein_varshaphala_1905_lahiri_partial_20260629.txt"
|
||||
assert packet["settings"]["target_year"] == 1905
|
||||
assert set(packet["target_placeholders"]) == {
|
||||
"target.solar_return_datetime",
|
||||
|
||||
Reference in New Issue
Block a user