feat(oracle): align annual and shadbala closure boards
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"scope": "jyotish_external_oracle_closure_master_dashboard",
|
||||
"schema_version": 1,
|
||||
"generated_at": "2026-06-26T10:31:36.549795+00:00",
|
||||
"generated_at": "2026-06-26T12:13:47.440227+00:00",
|
||||
"summary": {
|
||||
"total_tasks": 12,
|
||||
"external_verified_tasks": 0,
|
||||
@@ -30,6 +30,49 @@
|
||||
"metadata.source_artifact",
|
||||
"target.vimshottari_start_date"
|
||||
],
|
||||
"missing_groups": {
|
||||
"metadata": {
|
||||
"count": 5,
|
||||
"fields": [
|
||||
"metadata.tool_name",
|
||||
"metadata.tool_version_or_url",
|
||||
"metadata.capture_date",
|
||||
"metadata.operator_note",
|
||||
"metadata.source_artifact"
|
||||
]
|
||||
},
|
||||
"target": {
|
||||
"count": 1,
|
||||
"fields": [
|
||||
"target.vimshottari_start_date"
|
||||
]
|
||||
}
|
||||
},
|
||||
"prefilled_fields": {
|
||||
"status": "draft",
|
||||
"promotion_status_after_fill": "external_verified",
|
||||
"metadata": {
|
||||
"ayanamsa": "Lahiri",
|
||||
"node_mode": "true node",
|
||||
"timezone": "UTC-08:00"
|
||||
},
|
||||
"settings": {
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "true"
|
||||
}
|
||||
},
|
||||
"manual_fill_plan": {
|
||||
"status_value": "external_verified",
|
||||
"manual_entry_count": 6,
|
||||
"remaining_manual_fields": [
|
||||
"metadata.tool_name",
|
||||
"metadata.tool_version_or_url",
|
||||
"metadata.capture_date",
|
||||
"metadata.operator_note",
|
||||
"metadata.source_artifact",
|
||||
"target.vimshottari_start_date"
|
||||
]
|
||||
},
|
||||
"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_steve_jobs_dasha_lahiri.json --format json",
|
||||
"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"
|
||||
}
|
||||
@@ -103,6 +146,233 @@
|
||||
"target.shadbala_components.Saturn.drik",
|
||||
"target.shadbala_components.Saturn.total_rupa"
|
||||
],
|
||||
"missing_groups": {
|
||||
"metadata": {
|
||||
"count": 5,
|
||||
"fields": [
|
||||
"metadata.tool_name",
|
||||
"metadata.tool_version_or_url",
|
||||
"metadata.capture_date",
|
||||
"metadata.operator_note",
|
||||
"metadata.source_artifact"
|
||||
]
|
||||
},
|
||||
"target": {
|
||||
"count": 50,
|
||||
"fields": [
|
||||
"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"
|
||||
]
|
||||
},
|
||||
"bodies": {
|
||||
"Jupiter": {
|
||||
"count": 7,
|
||||
"fields": [
|
||||
"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"
|
||||
]
|
||||
},
|
||||
"Mars": {
|
||||
"count": 7,
|
||||
"fields": [
|
||||
"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"
|
||||
]
|
||||
},
|
||||
"Mercury": {
|
||||
"count": 7,
|
||||
"fields": [
|
||||
"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"
|
||||
]
|
||||
},
|
||||
"Moon": {
|
||||
"count": 7,
|
||||
"fields": [
|
||||
"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"
|
||||
]
|
||||
},
|
||||
"Saturn": {
|
||||
"count": 7,
|
||||
"fields": [
|
||||
"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"
|
||||
]
|
||||
},
|
||||
"Sun": {
|
||||
"count": 7,
|
||||
"fields": [
|
||||
"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"
|
||||
]
|
||||
},
|
||||
"Venus": {
|
||||
"count": 7,
|
||||
"fields": [
|
||||
"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"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"prefilled_fields": {
|
||||
"status": "draft",
|
||||
"promotion_status_after_fill": "external_verified",
|
||||
"metadata": {
|
||||
"ayanamsa": "Raman",
|
||||
"node_mode": "mean node",
|
||||
"timezone": "UTC+08:00"
|
||||
},
|
||||
"settings": {
|
||||
"ayanamsa": "raman",
|
||||
"node_mode": "mean"
|
||||
}
|
||||
},
|
||||
"manual_fill_plan": {
|
||||
"status_value": "external_verified",
|
||||
"manual_entry_count": 55,
|
||||
"remaining_manual_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"
|
||||
]
|
||||
},
|
||||
"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",
|
||||
"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"
|
||||
}
|
||||
@@ -136,6 +406,71 @@
|
||||
"target.tajika_yogas",
|
||||
"target.source_artifact"
|
||||
],
|
||||
"missing_groups": {
|
||||
"metadata": {
|
||||
"count": 5,
|
||||
"fields": [
|
||||
"metadata.tool_name",
|
||||
"metadata.tool_version_or_url",
|
||||
"metadata.capture_date",
|
||||
"metadata.operator_note",
|
||||
"metadata.source_artifact"
|
||||
]
|
||||
},
|
||||
"target": {
|
||||
"count": 10,
|
||||
"fields": [
|
||||
"target.solar_return_datetime",
|
||||
"target.varsha_lagna_deg",
|
||||
"target.muntha_sign",
|
||||
"target.year_lord",
|
||||
"target.mudda_dasha_first_lord",
|
||||
"target.sahams.punya_saham",
|
||||
"target.sahams.rajya_saham",
|
||||
"target.sahams.vivah_saham",
|
||||
"target.tajika_yogas",
|
||||
"target.source_artifact"
|
||||
]
|
||||
}
|
||||
},
|
||||
"prefilled_fields": {
|
||||
"status": "draft",
|
||||
"promotion_status_after_fill": "external_verified",
|
||||
"metadata": {
|
||||
"ayanamsa": "Lahiri",
|
||||
"node_mode": "true node",
|
||||
"timezone": "UTC-08:00",
|
||||
"annual_system": "Varshaphala/Tajika",
|
||||
"target_year": 1984
|
||||
},
|
||||
"settings": {
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "true",
|
||||
"annual_system": "varshaphala",
|
||||
"target_year": 1984
|
||||
}
|
||||
},
|
||||
"manual_fill_plan": {
|
||||
"status_value": "external_verified",
|
||||
"manual_entry_count": 15,
|
||||
"remaining_manual_fields": [
|
||||
"metadata.tool_name",
|
||||
"metadata.tool_version_or_url",
|
||||
"metadata.capture_date",
|
||||
"metadata.operator_note",
|
||||
"metadata.source_artifact",
|
||||
"target.solar_return_datetime",
|
||||
"target.varsha_lagna_deg",
|
||||
"target.muntha_sign",
|
||||
"target.year_lord",
|
||||
"target.mudda_dasha_first_lord",
|
||||
"target.sahams.punya_saham",
|
||||
"target.sahams.rajya_saham",
|
||||
"target.sahams.vivah_saham",
|
||||
"target.tajika_yogas",
|
||||
"target.source_artifact"
|
||||
]
|
||||
},
|
||||
"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_steve_jobs_varshaphala_1984_lahiri.json --format json",
|
||||
"validate_command": "python3 scripts/tajika_annual_oracle_queue.py --oracle-file references/oracle/tajika_annual_oracle_cases.json --format json && python3 scripts/tajika_annual_benchmark_dashboard.py --oracle-file references/oracle/tajika_annual_oracle_cases.json --format json"
|
||||
}
|
||||
@@ -147,6 +482,7 @@
|
||||
"case_id": "template_steve_jobs_dasha_lahiri",
|
||||
"capture_id": "external_template_steve_jobs_dasha_lahiri",
|
||||
"missing_field_count": 6,
|
||||
"manual_entry_count": 6,
|
||||
"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_steve_jobs_dasha_lahiri.json --format json"
|
||||
},
|
||||
{
|
||||
@@ -154,6 +490,7 @@
|
||||
"case_id": "template_steve_jobs_varshaphala_1984_lahiri",
|
||||
"capture_id": "external_template_steve_jobs_varshaphala_1984_lahiri",
|
||||
"missing_field_count": 15,
|
||||
"manual_entry_count": 15,
|
||||
"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_steve_jobs_varshaphala_1984_lahiri.json --format json"
|
||||
},
|
||||
{
|
||||
@@ -161,6 +498,7 @@
|
||||
"case_id": "template_redacted_place_shadbala_raman",
|
||||
"capture_id": "external_template_redacted_place_shadbala_raman",
|
||||
"missing_field_count": 55,
|
||||
"manual_entry_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:31:38.662077+00:00`
|
||||
Generated: `2026-06-26T12:13:46.930643+00:00`
|
||||
|
||||
## Summary
|
||||
|
||||
@@ -12,11 +12,11 @@ Generated: `2026-06-26T10:31:38.662077+00:00`
|
||||
|
||||
## Fronts
|
||||
|
||||
| front | tasks | verified | first priority | missing fields |
|
||||
|---|---:|---:|---|---:|
|
||||
| `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` | 55 |
|
||||
| front | tasks | verified | first priority | missing fields | manual entries | metadata missing | target missing |
|
||||
|---|---:|---:|---|---:|---:|---:|---:|
|
||||
| `dasha` | 3 | 0 | `template_steve_jobs_dasha_lahiri` | 6 | 6 | 5 | 1 |
|
||||
| `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 |
|
||||
|
||||
## Next Action Order
|
||||
|
||||
@@ -25,6 +25,7 @@ Generated: `2026-06-26T10:31:38.662077+00:00`
|
||||
- case_id: `template_steve_jobs_dasha_lahiri`
|
||||
- capture_id: `external_template_steve_jobs_dasha_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_steve_jobs_dasha_lahiri.json --format json
|
||||
@@ -35,6 +36,7 @@ python3 scripts/oracle_collection_queue.py --oracle-file references/oracle/dasha
|
||||
- case_id: `template_steve_jobs_varshaphala_1984_lahiri`
|
||||
- capture_id: `external_template_steve_jobs_varshaphala_1984_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_steve_jobs_varshaphala_1984_lahiri.json --format json
|
||||
@@ -45,6 +47,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: `55`
|
||||
- manual_entry_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
|
||||
|
||||
@@ -105,6 +105,233 @@
|
||||
"target.shadbala_components.Saturn.drik",
|
||||
"target.shadbala_components.Saturn.total_rupa"
|
||||
],
|
||||
"missing_groups": {
|
||||
"metadata": {
|
||||
"count": 5,
|
||||
"fields": [
|
||||
"metadata.tool_name",
|
||||
"metadata.tool_version_or_url",
|
||||
"metadata.capture_date",
|
||||
"metadata.operator_note",
|
||||
"metadata.source_artifact"
|
||||
]
|
||||
},
|
||||
"target": {
|
||||
"count": 50,
|
||||
"fields": [
|
||||
"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"
|
||||
]
|
||||
},
|
||||
"bodies": {
|
||||
"Jupiter": {
|
||||
"count": 7,
|
||||
"fields": [
|
||||
"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"
|
||||
]
|
||||
},
|
||||
"Mars": {
|
||||
"count": 7,
|
||||
"fields": [
|
||||
"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"
|
||||
]
|
||||
},
|
||||
"Mercury": {
|
||||
"count": 7,
|
||||
"fields": [
|
||||
"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"
|
||||
]
|
||||
},
|
||||
"Moon": {
|
||||
"count": 7,
|
||||
"fields": [
|
||||
"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"
|
||||
]
|
||||
},
|
||||
"Saturn": {
|
||||
"count": 7,
|
||||
"fields": [
|
||||
"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"
|
||||
]
|
||||
},
|
||||
"Sun": {
|
||||
"count": 7,
|
||||
"fields": [
|
||||
"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"
|
||||
]
|
||||
},
|
||||
"Venus": {
|
||||
"count": 7,
|
||||
"fields": [
|
||||
"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"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"prefilled_fields": {
|
||||
"status": "draft",
|
||||
"promotion_status_after_fill": "external_verified",
|
||||
"metadata": {
|
||||
"ayanamsa": "Raman",
|
||||
"node_mode": "mean node",
|
||||
"timezone": "UTC+08:00"
|
||||
},
|
||||
"settings": {
|
||||
"ayanamsa": "raman",
|
||||
"node_mode": "mean"
|
||||
}
|
||||
},
|
||||
"manual_fill_plan": {
|
||||
"status_value": "external_verified",
|
||||
"manual_entry_count": 55,
|
||||
"remaining_manual_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"
|
||||
]
|
||||
},
|
||||
"external_sources": [
|
||||
"JHora Shadbala component table screenshot",
|
||||
"PyJHora black-box shadbala output",
|
||||
|
||||
@@ -11,9 +11,100 @@
|
||||
- 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.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`
|
||||
|
||||
## Missing Summary
|
||||
|
||||
- metadata: `5`
|
||||
- target: `50`
|
||||
- bodies:
|
||||
|
||||
- Jupiter: `7`
|
||||
- Mars: `7`
|
||||
- Mercury: `7`
|
||||
- Moon: `7`
|
||||
- Saturn: `7`
|
||||
- Sun: `7`
|
||||
- Venus: `7`
|
||||
|
||||
## Prefilled Fields
|
||||
|
||||
- status: `draft`
|
||||
- promotion_status_after_fill: `external_verified`
|
||||
|
||||
- metadata:
|
||||
|
||||
- ayanamsa: `Raman`
|
||||
- node_mode: `mean node`
|
||||
- timezone: `UTC+08:00`
|
||||
|
||||
- settings:
|
||||
|
||||
- ayanamsa: `raman`
|
||||
- node_mode: `mean`
|
||||
|
||||
## Manual Fill Plan
|
||||
|
||||
- status_value: `external_verified`
|
||||
- manual_entry_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`
|
||||
- `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 Matrix
|
||||
|
||||
- planets: `Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn`
|
||||
|
||||
@@ -57,6 +57,71 @@
|
||||
"target.tajika_yogas",
|
||||
"target.source_artifact"
|
||||
],
|
||||
"missing_groups": {
|
||||
"metadata": {
|
||||
"count": 5,
|
||||
"fields": [
|
||||
"metadata.tool_name",
|
||||
"metadata.tool_version_or_url",
|
||||
"metadata.capture_date",
|
||||
"metadata.operator_note",
|
||||
"metadata.source_artifact"
|
||||
]
|
||||
},
|
||||
"target": {
|
||||
"count": 10,
|
||||
"fields": [
|
||||
"target.solar_return_datetime",
|
||||
"target.varsha_lagna_deg",
|
||||
"target.muntha_sign",
|
||||
"target.year_lord",
|
||||
"target.mudda_dasha_first_lord",
|
||||
"target.sahams.punya_saham",
|
||||
"target.sahams.rajya_saham",
|
||||
"target.sahams.vivah_saham",
|
||||
"target.tajika_yogas",
|
||||
"target.source_artifact"
|
||||
]
|
||||
}
|
||||
},
|
||||
"prefilled_fields": {
|
||||
"status": "draft",
|
||||
"promotion_status_after_fill": "external_verified",
|
||||
"metadata": {
|
||||
"ayanamsa": "Lahiri",
|
||||
"node_mode": "true node",
|
||||
"timezone": "UTC-08:00",
|
||||
"annual_system": "Varshaphala/Tajika",
|
||||
"target_year": 1984
|
||||
},
|
||||
"settings": {
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "true",
|
||||
"annual_system": "varshaphala",
|
||||
"target_year": 1984
|
||||
}
|
||||
},
|
||||
"manual_fill_plan": {
|
||||
"status_value": "external_verified",
|
||||
"manual_entry_count": 15,
|
||||
"remaining_manual_fields": [
|
||||
"metadata.tool_name",
|
||||
"metadata.tool_version_or_url",
|
||||
"metadata.capture_date",
|
||||
"metadata.operator_note",
|
||||
"metadata.source_artifact",
|
||||
"target.solar_return_datetime",
|
||||
"target.varsha_lagna_deg",
|
||||
"target.muntha_sign",
|
||||
"target.year_lord",
|
||||
"target.mudda_dasha_first_lord",
|
||||
"target.sahams.punya_saham",
|
||||
"target.sahams.rajya_saham",
|
||||
"target.sahams.vivah_saham",
|
||||
"target.tajika_yogas",
|
||||
"target.source_artifact"
|
||||
]
|
||||
},
|
||||
"external_sources": [
|
||||
"JHora Varshaphala screenshot",
|
||||
"PyJHora black-box annual output",
|
||||
|
||||
@@ -11,8 +11,54 @@
|
||||
- capture_id: `external_template_steve_jobs_varshaphala_1984_lahiri`
|
||||
- packet_path: `references/oracle/artifacts/pending_packets/external_template_steve_jobs_varshaphala_1984_lahiri.json`
|
||||
- required_target_fields: `target.solar_return_datetime, target.varsha_lagna_deg, target.muntha_sign, target.year_lord, target.mudda_dasha_first_lord, target.sahams.punya_saham, target.sahams.rajya_saham, target.sahams.vivah_saham, target.tajika_yogas, target.source_artifact`
|
||||
- missing_fields: `metadata.tool_name, metadata.tool_version_or_url, metadata.capture_date, metadata.operator_note, metadata.source_artifact, target.solar_return_datetime, target.varsha_lagna_deg, target.muntha_sign, target.year_lord, target.mudda_dasha_first_lord, target.sahams.punya_saham, target.sahams.rajya_saham, target.sahams.vivah_saham, target.tajika_yogas, target.source_artifact`
|
||||
|
||||
## Missing Summary
|
||||
|
||||
- metadata: `5`
|
||||
- target: `10`
|
||||
|
||||
## Prefilled Fields
|
||||
|
||||
- status: `draft`
|
||||
- promotion_status_after_fill: `external_verified`
|
||||
|
||||
- metadata:
|
||||
|
||||
- ayanamsa: `Lahiri`
|
||||
- node_mode: `true node`
|
||||
- timezone: `UTC-08:00`
|
||||
- annual_system: `Varshaphala/Tajika`
|
||||
- target_year: `1984`
|
||||
|
||||
- settings:
|
||||
|
||||
- ayanamsa: `lahiri`
|
||||
- node_mode: `true`
|
||||
- annual_system: `varshaphala`
|
||||
- target_year: `1984`
|
||||
|
||||
## Manual Fill Plan
|
||||
|
||||
- status_value: `external_verified`
|
||||
- manual_entry_count: `15`
|
||||
|
||||
## Missing Fields
|
||||
|
||||
- `metadata.tool_name`
|
||||
- `metadata.tool_version_or_url`
|
||||
- `metadata.capture_date`
|
||||
- `metadata.operator_note`
|
||||
- `metadata.source_artifact`
|
||||
- `target.solar_return_datetime`
|
||||
- `target.varsha_lagna_deg`
|
||||
- `target.muntha_sign`
|
||||
- `target.year_lord`
|
||||
- `target.mudda_dasha_first_lord`
|
||||
- `target.sahams.punya_saham`
|
||||
- `target.sahams.rajya_saham`
|
||||
- `target.sahams.vivah_saham`
|
||||
- `target.tajika_yogas`
|
||||
- `target.source_artifact`
|
||||
## Commands
|
||||
|
||||
```bash
|
||||
|
||||
@@ -49,6 +49,9 @@ def _front_from_status(name: str, status: dict[str, Any], task_key: str, verifie
|
||||
"packet_path": first["packet_path"],
|
||||
"missing_field_count": len(missing_fields),
|
||||
"missing_fields": missing_fields,
|
||||
"missing_groups": first.get("missing_groups", {}),
|
||||
"prefilled_fields": first.get("prefilled_fields", {}),
|
||||
"manual_fill_plan": first.get("manual_fill_plan", {}),
|
||||
"apply_command": first.get("apply_command", ""),
|
||||
"validate_command": first.get("validate_command", ""),
|
||||
},
|
||||
@@ -113,6 +116,7 @@ def build_dashboard(dasha_oracle_file: str, tajika_oracle_file: str) -> dict[str
|
||||
"case_id": front["first_priority"]["case_id"],
|
||||
"capture_id": front["first_priority"]["capture_id"],
|
||||
"missing_field_count": front["first_priority"]["missing_field_count"],
|
||||
"manual_entry_count": int(front["first_priority"].get("manual_fill_plan", {}).get("manual_entry_count", front["first_priority"]["missing_field_count"])),
|
||||
"apply_command": front["first_priority"]["apply_command"],
|
||||
}
|
||||
for front in fronts.values()
|
||||
@@ -157,14 +161,18 @@ def render_markdown(report: dict[str, Any]) -> str:
|
||||
"",
|
||||
"## Fronts",
|
||||
"",
|
||||
"| front | tasks | verified | first priority | missing fields |",
|
||||
"|---|---:|---:|---|---:|",
|
||||
"| front | tasks | verified | first priority | missing fields | manual entries | metadata missing | target missing |",
|
||||
"|---|---:|---:|---|---:|---:|---:|---:|",
|
||||
]
|
||||
for key in ["dasha", "tajika_sahams", "shadbala"]:
|
||||
front = report["fronts"][key]
|
||||
first = front["first_priority"]
|
||||
missing_groups = first.get("missing_groups", {})
|
||||
manual_fill_plan = first.get("manual_fill_plan", {})
|
||||
lines.append(
|
||||
f"| `{key}` | {front['task_count']} | {front['external_verified_tasks']} | `{first['case_id']}` | {first['missing_field_count']} |"
|
||||
f"| `{key}` | {front['task_count']} | {front['external_verified_tasks']} | `{first['case_id']}` | "
|
||||
f"{first['missing_field_count']} | {manual_fill_plan.get('manual_entry_count', first['missing_field_count'])} | "
|
||||
f"{missing_groups.get('metadata', {}).get('count', 0)} | {missing_groups.get('target', {}).get('count', 0)} |"
|
||||
)
|
||||
lines.extend(["", "## Next Action Order", ""])
|
||||
for item in report["next_action_order"]:
|
||||
@@ -175,6 +183,7 @@ def render_markdown(report: dict[str, Any]) -> str:
|
||||
f"- case_id: `{item['case_id']}`",
|
||||
f"- capture_id: `{item['capture_id']}`",
|
||||
f"- missing_field_count: `{item['missing_field_count']}`",
|
||||
f"- manual_entry_count: `{item['manual_entry_count']}`",
|
||||
"",
|
||||
"```bash",
|
||||
item["apply_command"],
|
||||
|
||||
@@ -14,6 +14,7 @@ from typing import Any
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
PYTHON = sys.executable
|
||||
FIRST_PRIORITY_CASE_ID = "template_redacted_place_shadbala_raman"
|
||||
FIRST_PRIORITY_TEMPLATE_PATH = "references/oracle/evidence_packet_templates/shadbala_redacted_place_raman_first_packet.json"
|
||||
SHADBALA_TARGET_FIELD = "target.shadbala_components"
|
||||
SUPPORTING_TARGET_FIELDS = ["target.moon_sidereal_longitude_deg"]
|
||||
REQUIRED_PLANETS = ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn"]
|
||||
@@ -82,6 +83,67 @@ def _supporting_missing(packet: dict[str, Any], target_fields: list[str]) -> lis
|
||||
return missing
|
||||
|
||||
|
||||
def _group_missing_fields(missing_fields: list[str]) -> dict[str, Any]:
|
||||
metadata_fields = [field for field in missing_fields if field.startswith("metadata.")]
|
||||
target_fields = [field for field in missing_fields if field.startswith("target.")]
|
||||
body_groups: dict[str, list[str]] = {}
|
||||
prefix = f"{SHADBALA_TARGET_FIELD}."
|
||||
for field in target_fields:
|
||||
if not field.startswith(prefix):
|
||||
continue
|
||||
remainder = field[len(prefix):]
|
||||
body, _, component = remainder.partition(".")
|
||||
if not body or not component:
|
||||
continue
|
||||
body_groups.setdefault(body, []).append(field)
|
||||
grouped_bodies = {
|
||||
body: {
|
||||
"count": len(fields),
|
||||
"fields": fields,
|
||||
}
|
||||
for body, fields in sorted(body_groups.items())
|
||||
}
|
||||
return {
|
||||
"metadata": {
|
||||
"count": len(metadata_fields),
|
||||
"fields": metadata_fields,
|
||||
},
|
||||
"target": {
|
||||
"count": len(target_fields),
|
||||
"fields": target_fields,
|
||||
},
|
||||
"bodies": grouped_bodies,
|
||||
}
|
||||
|
||||
|
||||
def _prefilled_fields(packet: dict[str, Any], missing_fields: list[str]) -> dict[str, Any]:
|
||||
missing = set(missing_fields)
|
||||
metadata = {
|
||||
key: value
|
||||
for key, value in packet.get("metadata", {}).items()
|
||||
if f"metadata.{key}" not in missing and value not in ("", None, [], {})
|
||||
}
|
||||
settings = {
|
||||
key: value
|
||||
for key, value in packet.get("settings", {}).items()
|
||||
if value not in ("", None, [], {})
|
||||
}
|
||||
return {
|
||||
"status": packet.get("status"),
|
||||
"promotion_status_after_fill": packet.get("promotion_status_after_fill"),
|
||||
"metadata": metadata,
|
||||
"settings": settings,
|
||||
}
|
||||
|
||||
|
||||
def _manual_fill_plan(packet: dict[str, Any], missing_fields: list[str]) -> dict[str, Any]:
|
||||
return {
|
||||
"status_value": packet.get("promotion_status_after_fill", "external_verified"),
|
||||
"manual_entry_count": len(missing_fields),
|
||||
"remaining_manual_fields": missing_fields,
|
||||
}
|
||||
|
||||
|
||||
def _apply_command(packet_path: str, oracle_file: str) -> str:
|
||||
return (
|
||||
"python3 scripts/oracle_collection_queue.py "
|
||||
@@ -111,12 +173,15 @@ def build_status(oracle_file: str) -> dict[str, Any]:
|
||||
if priority is None:
|
||||
raise RuntimeError("No Shadbala target task found")
|
||||
|
||||
packet = priority["evidence_packet"]
|
||||
capture_id = packet["capture_id"]
|
||||
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"))
|
||||
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)
|
||||
missing_groups = _group_missing_fields(missing_fields)
|
||||
external_verified = [
|
||||
task for task in shadbala_tasks
|
||||
if (
|
||||
@@ -145,6 +210,9 @@ def build_status(oracle_file: str) -> dict[str, Any]:
|
||||
"settings": priority.get("settings", {}),
|
||||
"required_target_fields": supporting_target_fields + [SHADBALA_TARGET_FIELD],
|
||||
"missing_fields": missing_fields,
|
||||
"missing_groups": missing_groups,
|
||||
"prefilled_fields": _prefilled_fields(packet, missing_fields),
|
||||
"manual_fill_plan": _manual_fill_plan(packet, missing_fields),
|
||||
"external_sources": [
|
||||
"JHora Shadbala component table screenshot",
|
||||
"PyJHora black-box shadbala output",
|
||||
@@ -186,9 +254,59 @@ def render_markdown(report: dict[str, Any]) -> str:
|
||||
f"- capture_id: `{first['capture_id']}`",
|
||||
f"- packet_path: `{first['packet_path']}`",
|
||||
f"- required_target_fields: `{', '.join(first['required_target_fields'])}`",
|
||||
f"- missing_fields: `{', '.join(first['missing_fields'])}`",
|
||||
f"- reject_global_scaling: `{str(first['reject_global_scaling']).lower()}`",
|
||||
"",
|
||||
"## Missing Summary",
|
||||
"",
|
||||
f"- metadata: `{first['missing_groups']['metadata']['count']}`",
|
||||
f"- target: `{first['missing_groups']['target']['count']}`",
|
||||
]
|
||||
if first["missing_groups"]["bodies"]:
|
||||
lines.extend(["- bodies:", ""])
|
||||
lines.extend(
|
||||
f" - {body}: `{payload['count']}`"
|
||||
for body, payload in first["missing_groups"]["bodies"].items()
|
||||
)
|
||||
lines.extend(
|
||||
[
|
||||
"",
|
||||
"## Prefilled Fields",
|
||||
"",
|
||||
f"- status: `{first['prefilled_fields']['status']}`",
|
||||
f"- promotion_status_after_fill: `{first['prefilled_fields']['promotion_status_after_fill']}`",
|
||||
"",
|
||||
]
|
||||
)
|
||||
if first["prefilled_fields"]["metadata"]:
|
||||
lines.append("- metadata:")
|
||||
lines.append("")
|
||||
lines.extend(
|
||||
f" - {key}: `{value}`"
|
||||
for key, value in first["prefilled_fields"]["metadata"].items()
|
||||
)
|
||||
lines.append("")
|
||||
if first["prefilled_fields"]["settings"]:
|
||||
lines.append("- settings:")
|
||||
lines.append("")
|
||||
lines.extend(
|
||||
f" - {key}: `{value}`"
|
||||
for key, value in first["prefilled_fields"]["settings"].items()
|
||||
)
|
||||
lines.append("")
|
||||
lines.extend(
|
||||
[
|
||||
"## Manual Fill Plan",
|
||||
"",
|
||||
f"- status_value: `{first['manual_fill_plan']['status_value']}`",
|
||||
f"- manual_entry_count: `{first['manual_fill_plan']['manual_entry_count']}`",
|
||||
"",
|
||||
"## Missing Fields",
|
||||
"",
|
||||
]
|
||||
)
|
||||
lines.extend(f"- `{field}`" for field in first["missing_fields"])
|
||||
lines.extend(
|
||||
[
|
||||
"## Required Matrix",
|
||||
"",
|
||||
f"- planets: `{', '.join(summary['required_planets'])}`",
|
||||
@@ -206,7 +324,8 @@ def render_markdown(report: dict[str, Any]) -> str:
|
||||
"",
|
||||
"## Next Actions",
|
||||
"",
|
||||
]
|
||||
]
|
||||
)
|
||||
lines.extend(f"- {item}" for item in report["next_actions"])
|
||||
lines.extend(["", "## Boundary", "", report["boundary"], ""])
|
||||
return "\n".join(lines)
|
||||
|
||||
@@ -14,6 +14,7 @@ from typing import Any
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
PYTHON = sys.executable
|
||||
FIRST_PRIORITY_CASE_ID = "template_steve_jobs_varshaphala_1984_lahiri"
|
||||
FIRST_PRIORITY_TEMPLATE_PATH = "references/oracle/evidence_packet_templates/tajika_steve_jobs_1984_first_packet.json"
|
||||
REQUIRED_TARGET_FIELDS = [
|
||||
"target.solar_return_datetime",
|
||||
"target.varsha_lagna_deg",
|
||||
@@ -66,6 +67,49 @@ def _target_missing(packet: dict[str, Any]) -> list[str]:
|
||||
return missing
|
||||
|
||||
|
||||
def _group_missing_fields(missing_fields: list[str]) -> dict[str, Any]:
|
||||
metadata_fields = [field for field in missing_fields if field.startswith("metadata.")]
|
||||
target_fields = [field for field in missing_fields if field.startswith("target.")]
|
||||
return {
|
||||
"metadata": {
|
||||
"count": len(metadata_fields),
|
||||
"fields": metadata_fields,
|
||||
},
|
||||
"target": {
|
||||
"count": len(target_fields),
|
||||
"fields": target_fields,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def _prefilled_fields(packet: dict[str, Any], missing_fields: list[str]) -> dict[str, Any]:
|
||||
missing = set(missing_fields)
|
||||
metadata = {
|
||||
key: value
|
||||
for key, value in packet.get("metadata", {}).items()
|
||||
if f"metadata.{key}" not in missing and value not in ("", None, [], {})
|
||||
}
|
||||
settings = {
|
||||
key: value
|
||||
for key, value in packet.get("settings", {}).items()
|
||||
if value not in ("", None, [], {})
|
||||
}
|
||||
return {
|
||||
"status": packet.get("status"),
|
||||
"promotion_status_after_fill": packet.get("promotion_status_after_fill"),
|
||||
"metadata": metadata,
|
||||
"settings": settings,
|
||||
}
|
||||
|
||||
|
||||
def _manual_fill_plan(packet: dict[str, Any], missing_fields: list[str]) -> dict[str, Any]:
|
||||
return {
|
||||
"status_value": packet.get("promotion_status_after_fill", "external_verified"),
|
||||
"manual_entry_count": len(missing_fields),
|
||||
"remaining_manual_fields": missing_fields,
|
||||
}
|
||||
|
||||
|
||||
def _apply_command(packet_path: str, oracle_file: str) -> str:
|
||||
return (
|
||||
"python3 scripts/tajika_annual_oracle_queue.py "
|
||||
@@ -93,10 +137,13 @@ def build_status(oracle_file: str) -> dict[str, Any]:
|
||||
if priority is None:
|
||||
raise RuntimeError("No Tajika annual task found")
|
||||
|
||||
packet = priority["evidence_packet"]
|
||||
capture_id = packet["capture_id"]
|
||||
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)
|
||||
missing_groups = _group_missing_fields(missing_fields)
|
||||
external_verified = [
|
||||
task for task in annual_tasks
|
||||
if task.get("status") == "external_verified" and not _target_missing(task.get("evidence_packet", {}))
|
||||
@@ -119,6 +166,9 @@ def build_status(oracle_file: str) -> dict[str, Any]:
|
||||
"settings": priority.get("settings", {}),
|
||||
"required_target_fields": REQUIRED_TARGET_FIELDS,
|
||||
"missing_fields": missing_fields,
|
||||
"missing_groups": missing_groups,
|
||||
"prefilled_fields": _prefilled_fields(packet, missing_fields),
|
||||
"manual_fill_plan": _manual_fill_plan(packet, missing_fields),
|
||||
"external_sources": [
|
||||
"JHora Varshaphala screenshot",
|
||||
"PyJHora black-box annual output",
|
||||
@@ -158,8 +208,48 @@ def render_markdown(report: dict[str, Any]) -> str:
|
||||
f"- capture_id: `{first['capture_id']}`",
|
||||
f"- packet_path: `{first['packet_path']}`",
|
||||
f"- required_target_fields: `{', '.join(first['required_target_fields'])}`",
|
||||
f"- missing_fields: `{', '.join(first['missing_fields'])}`",
|
||||
"",
|
||||
"## Missing Summary",
|
||||
"",
|
||||
f"- metadata: `{first['missing_groups']['metadata']['count']}`",
|
||||
f"- target: `{first['missing_groups']['target']['count']}`",
|
||||
"",
|
||||
"## Prefilled Fields",
|
||||
"",
|
||||
f"- status: `{first['prefilled_fields']['status']}`",
|
||||
f"- promotion_status_after_fill: `{first['prefilled_fields']['promotion_status_after_fill']}`",
|
||||
"",
|
||||
]
|
||||
if first["prefilled_fields"]["metadata"]:
|
||||
lines.append("- metadata:")
|
||||
lines.append("")
|
||||
lines.extend(
|
||||
f" - {key}: `{value}`"
|
||||
for key, value in first["prefilled_fields"]["metadata"].items()
|
||||
)
|
||||
lines.append("")
|
||||
if first["prefilled_fields"]["settings"]:
|
||||
lines.append("- settings:")
|
||||
lines.append("")
|
||||
lines.extend(
|
||||
f" - {key}: `{value}`"
|
||||
for key, value in first["prefilled_fields"]["settings"].items()
|
||||
)
|
||||
lines.append("")
|
||||
lines.extend(
|
||||
[
|
||||
"## Manual Fill Plan",
|
||||
"",
|
||||
f"- status_value: `{first['manual_fill_plan']['status_value']}`",
|
||||
f"- manual_entry_count: `{first['manual_fill_plan']['manual_entry_count']}`",
|
||||
"",
|
||||
"## Missing Fields",
|
||||
"",
|
||||
]
|
||||
)
|
||||
lines.extend(f"- `{field}`" for field in first["missing_fields"])
|
||||
lines.extend(
|
||||
[
|
||||
"## Commands",
|
||||
"",
|
||||
"```bash",
|
||||
@@ -172,7 +262,8 @@ def render_markdown(report: dict[str, Any]) -> str:
|
||||
"",
|
||||
"## Next Actions",
|
||||
"",
|
||||
]
|
||||
]
|
||||
)
|
||||
lines.extend(f"- {item}" for item in report["next_actions"])
|
||||
lines.extend(["", "## Boundary", "", report["boundary"], ""])
|
||||
return "\n".join(lines)
|
||||
|
||||
@@ -48,8 +48,13 @@ def test_oracle_closure_master_dashboard_aggregates_all_hard_fronts() -> None:
|
||||
assert report["fronts"]["dasha"]["first_priority"]["case_id"] == "template_steve_jobs_dasha_lahiri"
|
||||
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"]["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"]["shadbala"]["first_priority"]["manual_fill_plan"]["manual_entry_count"] == 55
|
||||
assert report["next_action_order"][0]["front"] == "dasha"
|
||||
assert report["next_action_order"][0]["missing_field_count"] == 6
|
||||
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"
|
||||
|
||||
@@ -67,3 +72,5 @@ def test_oracle_closure_master_dashboard_markdown_can_be_written(tmp_path: Path)
|
||||
assert "template_steve_jobs_dasha_lahiri" in markdown
|
||||
assert "template_redacted_place_shadbala_raman" in markdown
|
||||
assert "template_steve_jobs_varshaphala_1984_lahiri" in markdown
|
||||
assert "manual entries" in markdown
|
||||
assert "metadata missing" in markdown
|
||||
|
||||
@@ -51,6 +51,12 @@ def test_shadbala_oracle_closure_status_identifies_first_absolute_value_packet()
|
||||
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"]["missing_groups"]["metadata"]["count"] == 5
|
||||
assert report["first_priority"]["missing_groups"]["target"]["count"] == 50
|
||||
assert report["first_priority"]["missing_groups"]["bodies"]["Sun"]["count"] == 7
|
||||
assert report["first_priority"]["prefilled_fields"]["metadata"]["ayanamsa"] == "Raman"
|
||||
assert report["first_priority"]["manual_fill_plan"]["status_value"] == "external_verified"
|
||||
assert report["first_priority"]["manual_fill_plan"]["manual_entry_count"] == 55
|
||||
assert report["first_priority"]["reject_global_scaling"] is True
|
||||
assert report["first_priority"]["validate_command"]
|
||||
|
||||
@@ -66,3 +72,6 @@ def test_shadbala_oracle_closure_status_markdown_can_be_written(tmp_path: Path)
|
||||
assert "can_claim_shadbala_absolute_closure: `false`" in markdown
|
||||
assert "external_template_redacted_place_shadbala_raman" in markdown
|
||||
assert "target.shadbala_components.Sun.sthana" in markdown
|
||||
assert "## Missing Summary" in markdown
|
||||
assert "## Prefilled Fields" in markdown
|
||||
assert "## Manual Fill Plan" in markdown
|
||||
|
||||
@@ -56,6 +56,11 @@ def test_tajika_annual_closure_status_identifies_first_annual_packet() -> None:
|
||||
assert "metadata.tool_name" in report["first_priority"]["missing_fields"]
|
||||
assert "target.solar_return_datetime" in report["first_priority"]["missing_fields"]
|
||||
assert "target.sahams.punya_saham" in report["first_priority"]["missing_fields"]
|
||||
assert report["first_priority"]["missing_groups"]["metadata"]["count"] == 5
|
||||
assert report["first_priority"]["missing_groups"]["target"]["count"] == 10
|
||||
assert report["first_priority"]["prefilled_fields"]["metadata"]["annual_system"] == "Varshaphala/Tajika"
|
||||
assert report["first_priority"]["manual_fill_plan"]["status_value"] == "external_verified"
|
||||
assert report["first_priority"]["manual_fill_plan"]["manual_entry_count"] == 15
|
||||
assert report["first_priority"]["validate_command"]
|
||||
|
||||
|
||||
@@ -70,3 +75,6 @@ def test_tajika_annual_closure_status_markdown_can_be_written(tmp_path: Path) ->
|
||||
assert "can_claim_tajika_sahams_closure: `false`" in markdown
|
||||
assert "external_template_steve_jobs_varshaphala_1984_lahiri" in markdown
|
||||
assert "target.sahams.punya_saham" in markdown
|
||||
assert "## Missing Summary" in markdown
|
||||
assert "## Prefilled Fields" in markdown
|
||||
assert "## Manual Fill Plan" in markdown
|
||||
|
||||
Reference in New Issue
Block a user