Add official VedAstro MCP bridge and routing assets

This commit is contained in:
732642856
2026-06-29 07:50:32 +08:00
parent 2ca0939817
commit 78f4585d84
18 changed files with 2040 additions and 44 deletions
@@ -1,6 +1,6 @@
# Jyotish External Oracle Closure Master Dashboard
Generated: `2026-06-26T19:05:03.531931+00:00`
Generated: `2026-06-28T23:44:03.079746+00:00`
## Summary
@@ -16,7 +16,7 @@ Generated: `2026-06-26T19:05:03.531931+00:00`
|---|---:|---:|---|---:|---:|---:|---:|
| `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 |
| `shadbala` | 4 | 4 | `complete` | 0 | 0 | 0 | 0 |
## Next Action Order
@@ -1,6 +1,6 @@
# Public Jyotish Benchmark Dashboard
Generated: `2026-06-28T07:20:42.239186+00:00`
Generated: `2026-06-28T23:44:26.816376+00:00`
## Capability Registry
@@ -10,9 +10,9 @@ Generated: `2026-06-28T07:20:42.239186+00:00`
## Dasha/Shadbala Oracle Readiness
- total_packets: `5`
- valid_packets: `4`
- ready_for_calibration: `4`
- total_packets: `6`
- valid_packets: `5`
- ready_for_calibration: `5`
- production_tuning_allowed: `false`
- valid_dasha_packets: `3`
- total_dasha_packets: `3`
@@ -29,8 +29,8 @@ Generated: `2026-06-28T07:20:42.239186+00:00`
## Boundary Audit
- external_verified_template_cases: `4`
- template_comparison_count: `4`
- external_verified_template_cases: `5`
- template_comparison_count: `5`
- production_tuning_recommended: `false`
## Global First Claim
@@ -0,0 +1,225 @@
{
"scope": "vedastro_fast_path_checklist",
"generated_at": "2026-06-28T23:49:39.978828+00:00",
"summary": {
"row_count": 13,
"local_registry_technique_count": 89,
"catalog_tag_count": 46,
"catalog_method_count": 2258
},
"boundary": {
"do_not_clone_vedastro": true,
"keep_local_adjudicator_authoritative": true,
"external_outputs_default_to_secondary_context": true
},
"official_catalog": {
"available": true,
"path": "/Users/wuyongnaren/Documents/印度占星/scratch/local/vedastro_adapter/method_catalog_snapshot.json",
"tag_count": 46,
"method_count": 2258
},
"lanes": {
"official_mcp": [
{
"capability": "MCP / API Surface",
"priority": "P0",
"recommended_path": "hybrid_local_plus_vedastro",
"local_status": "partial",
"adjudicator_use": "primary",
"route_notes": "If official MCP is available, that is the fastest direct agent path; otherwise fall back to local REST adapter.",
"gap_notes": "Local API/MCP surfaces exist and the official public MCP bridge is live; REST adapter official endpoint smoke still depends on configured endpoint-backed execution.",
"local_assets": [
"mcp_server.py",
"jyotish_api_server.py",
"strict workflows",
"vedastro_service_adapter.py",
"vedastro_official_mcp_bridge.py"
]
}
],
"official_python_bridge": [
{
"capability": "Tajika Annual",
"priority": "P0",
"recommended_path": "hybrid_local_plus_vedastro",
"local_status": "partial",
"adjudicator_use": "secondary",
"route_notes": "Use Python bridge for breadth, but keep year-chart reasoning and labels local.",
"gap_notes": "Annual modules exist; yearly career/wealth/month windows need stronger strict-workflow integration.",
"local_assets": [
"tajika.py",
"varshaphala.py",
"sahams",
"solar_return"
]
},
{
"capability": "Ashtakavarga",
"priority": "P0",
"recommended_path": "hybrid_local_plus_vedastro",
"local_status": "partial",
"adjudicator_use": "secondary",
"route_notes": "Use the Python bridge for broad calculator access while local strict workflows stay authoritative.",
"gap_notes": "SAV/BAV is in production; PAV/Sodhita/Kakshya bridges need continued regression before being dominant labels.",
"local_assets": [
"ashtakavarga",
"ashtakavarga_pav",
"ashtakavarga_sodhita",
"finance_ashtakavarga_bridge"
]
},
{
"capability": "Shadbala",
"priority": "P0",
"recommended_path": "hybrid_local_plus_vedastro",
"local_status": "partial",
"adjudicator_use": "secondary",
"route_notes": "Broad strength calculators are easiest through the Python bridge, then folded back as oracle evidence.",
"gap_notes": "Local component-aware cap exists; absolute external oracle closure is still incomplete.",
"local_assets": [
"shadbala",
"shadbala_advanced",
"shadbala_component_cap",
"oracle_shadbala_queue"
]
}
],
"rest_adapter": [
{
"capability": "EventsAtRange / Life Event Graph",
"priority": "P0",
"recommended_path": "hybrid_local_plus_vedastro",
"local_status": "partial",
"adjudicator_use": "oracle_only",
"route_notes": "Use official REST adapter first for range scans; keep local adjudicator as the reasoning layer.",
"gap_notes": "Local timing modules exist, but a high-frequency day/hour event graph is not yet a local productized radar.",
"local_assets": [
"transit_trigger",
"dasha",
"narayana_dasha",
"vedastro_service_adapter.range_scan"
]
},
{
"capability": "Birth Time ML / Rectification Assistant",
"priority": "P1",
"recommended_path": "hybrid_local_plus_vedastro",
"local_status": "partial",
"adjudicator_use": "secondary",
"route_notes": "Use VedAstro externally only as supporting evidence; local rectification gate stays in control.",
"gap_notes": "Local rectification exists; ML parity with VedAstro-style service behavior is not established.",
"local_assets": [
"birth_time_rectifier.py",
"rectification_gate",
"jyotish-app rectification"
]
}
],
"local_native_preferred": [
{
"capability": "Prashna / Horary",
"priority": "P0",
"recommended_path": "local_native",
"local_status": "covered",
"adjudicator_use": "secondary",
"route_notes": "No need to outsource core horary math while local modules already exist.",
"gap_notes": "Horary modules exist but are not yet a first-class question adjudicator route.",
"local_assets": [
"prashna.py",
"kp_system.py",
"upagraha_gulika_maandi",
"sphuta_trisphuta_family"
]
},
{
"capability": "Jaimini / Chara Dasha",
"priority": "P0",
"recommended_path": "local_native",
"local_status": "covered",
"adjudicator_use": "secondary",
"route_notes": "Keep Jaimini native; external engines help only as spot-check evidence.",
"gap_notes": "Core Jaimini exists; mission/career/marriage quality adjudicator folding is not yet exhaustive.",
"local_assets": [
"jaimini.py",
"AK",
"DK",
"UL",
"Chara Dasha",
"Jaimini marriage bridge v1"
]
},
{
"capability": "Report Rendering",
"priority": "P0",
"recommended_path": "new_local_impl",
"local_status": "partial",
"adjudicator_use": "not_used",
"route_notes": "Rendering is a local product concern, not a VedAstro dependency.",
"gap_notes": "HTML/PDF artifact path exists; polished SVG/PDF chart rendering and cloud-scale report production are not finished.",
"local_assets": [
"report_artifact API",
"report_builder.py",
"chart_renderer.py",
"jyotish-app export"
]
},
{
"capability": "Synastry / Ashtakoot",
"priority": "P0",
"recommended_path": "local_native",
"local_status": "covered",
"adjudicator_use": "secondary",
"route_notes": "Local matching is already stronger than a thin external call unless you need an oracle comparison.",
"gap_notes": "Matching modules exist and API-backed; relationship adjudicator still needs a formal bridge.",
"local_assets": [
"synastry.py",
"ashtakoot.py",
"36-point Ashtakoot",
"16-factor compatibility"
]
},
{
"capability": "D1-D60 Divisional Charts",
"priority": "P0",
"recommended_path": "local_native",
"local_status": "covered",
"adjudicator_use": "primary",
"route_notes": "Do not pay external-call cost here; local engine is already the primary route.",
"gap_notes": "Local varga coverage is strong; keep VedAstro/PyJHora as benchmark evidence rather than replacing local math.",
"local_assets": [
"varga",
"varga_full",
"shodasavarga",
"divisional_charts_extended"
]
}
],
"hybrid_router": [
{
"capability": "Ayanamsa Selection",
"priority": "P0",
"recommended_path": "hybrid_local_plus_vedastro",
"local_status": "partial",
"adjudicator_use": "oracle_only",
"route_notes": "Prefer local ayanamsa controls for production and use VedAstro only as parity/oracle evidence.",
"gap_notes": "Local Lahiri path is usable, but broad ayanamsa parity and public comparison artifacts remain incomplete.",
"local_assets": [
"ayanamsa_utils",
"ephemeris_adapter_contract"
]
}
],
"external_evidence_only": [
{
"capability": "Numerology / Non-Jyotish Tools",
"priority": "P2",
"recommended_path": "external_evidence_only",
"local_status": "missing",
"adjudicator_use": "not_used",
"route_notes": "Do not implement locally unless it becomes product-critical.",
"gap_notes": "Adjacent product feature; not required for Jyotish adjudicator depth.",
"local_assets": []
}
]
}
}
@@ -0,0 +1,80 @@
# VedAstro 596+ Nodes Fast-Path Checklist
- Generated: `2026-06-28T23:49:39.978828+00:00`
- Local registry techniques: `89`
- Official catalog tags: `46`
- Official catalog methods/events: `2258`
## Boundary
- Do not clone VedAstro wholesale into local code.
- Keep the local adjudicator as the final reasoning layer.
- Default all external outputs to secondary evidence unless explicitly promoted by local tests and contracts.
## Lane Breakdown
### Direct Official MCP
- `MCP / API Surface` [P0] - local=`partial`, adjudicator=`primary`; assets: mcp_server.py, jyotish_api_server.py, strict workflows, vedastro_service_adapter.py, vedastro_official_mcp_bridge.py
route: If official MCP is available, that is the fastest direct agent path; otherwise fall back to local REST adapter.
gap: Local API/MCP surfaces exist and the official public MCP bridge is live; REST adapter official endpoint smoke still depends on configured endpoint-backed execution.
### Official Python Bridge
- `Tajika Annual` [P0] - local=`partial`, adjudicator=`secondary`; assets: tajika.py, varshaphala.py, sahams, solar_return
route: Use Python bridge for breadth, but keep year-chart reasoning and labels local.
gap: Annual modules exist; yearly career/wealth/month windows need stronger strict-workflow integration.
- `Ashtakavarga` [P0] - local=`partial`, adjudicator=`secondary`; assets: ashtakavarga, ashtakavarga_pav, ashtakavarga_sodhita, finance_ashtakavarga_bridge
route: Use the Python bridge for broad calculator access while local strict workflows stay authoritative.
gap: SAV/BAV is in production; PAV/Sodhita/Kakshya bridges need continued regression before being dominant labels.
- `Shadbala` [P0] - local=`partial`, adjudicator=`secondary`; assets: shadbala, shadbala_advanced, shadbala_component_cap, oracle_shadbala_queue
route: Broad strength calculators are easiest through the Python bridge, then folded back as oracle evidence.
gap: Local component-aware cap exists; absolute external oracle closure is still incomplete.
### REST Adapter
- `EventsAtRange / Life Event Graph` [P0] - local=`partial`, adjudicator=`oracle_only`; assets: transit_trigger, dasha, narayana_dasha, vedastro_service_adapter.range_scan
route: Use official REST adapter first for range scans; keep local adjudicator as the reasoning layer.
gap: Local timing modules exist, but a high-frequency day/hour event graph is not yet a local productized radar.
- `Birth Time ML / Rectification Assistant` [P1] - local=`partial`, adjudicator=`secondary`; assets: birth_time_rectifier.py, rectification_gate, jyotish-app rectification
route: Use VedAstro externally only as supporting evidence; local rectification gate stays in control.
gap: Local rectification exists; ML parity with VedAstro-style service behavior is not established.
### Local Native Preferred
- `Prashna / Horary` [P0] - local=`covered`, adjudicator=`secondary`; assets: prashna.py, kp_system.py, upagraha_gulika_maandi, sphuta_trisphuta_family
route: No need to outsource core horary math while local modules already exist.
gap: Horary modules exist but are not yet a first-class question adjudicator route.
- `Jaimini / Chara Dasha` [P0] - local=`covered`, adjudicator=`secondary`; assets: jaimini.py, AK, DK, UL, Chara Dasha, Jaimini marriage bridge v1
route: Keep Jaimini native; external engines help only as spot-check evidence.
gap: Core Jaimini exists; mission/career/marriage quality adjudicator folding is not yet exhaustive.
- `Report Rendering` [P0] - local=`partial`, adjudicator=`not_used`; assets: report_artifact API, report_builder.py, chart_renderer.py, jyotish-app export
route: Rendering is a local product concern, not a VedAstro dependency.
gap: HTML/PDF artifact path exists; polished SVG/PDF chart rendering and cloud-scale report production are not finished.
- `Synastry / Ashtakoot` [P0] - local=`covered`, adjudicator=`secondary`; assets: synastry.py, ashtakoot.py, 36-point Ashtakoot, 16-factor compatibility
route: Local matching is already stronger than a thin external call unless you need an oracle comparison.
gap: Matching modules exist and API-backed; relationship adjudicator still needs a formal bridge.
- `D1-D60 Divisional Charts` [P0] - local=`covered`, adjudicator=`primary`; assets: varga, varga_full, shodasavarga, divisional_charts_extended
route: Do not pay external-call cost here; local engine is already the primary route.
gap: Local varga coverage is strong; keep VedAstro/PyJHora as benchmark evidence rather than replacing local math.
### Hybrid Router
- `Ayanamsa Selection` [P0] - local=`partial`, adjudicator=`oracle_only`; assets: ayanamsa_utils, ephemeris_adapter_contract
route: Prefer local ayanamsa controls for production and use VedAstro only as parity/oracle evidence.
gap: Local Lahiri path is usable, but broad ayanamsa parity and public comparison artifacts remain incomplete.
### External Evidence Only
- `Numerology / Non-Jyotish Tools` [P2] - local=`missing`, adjudicator=`not_used`; assets: -
route: Do not implement locally unless it becomes product-critical.
gap: Adjacent product feature; not required for Jyotish adjudicator depth.
## Immediate Execution Order
1. Use `Direct Official MCP` where an official MCP surface is available to agents.
2. Use `Official Python Bridge` for broad calculator access that does not need browser/session orchestration.
3. Use `REST Adapter` for range scans and endpoint-style external evidence.
4. Keep `Local Native Preferred` rows local; do not waste time rebuilding what is already stronger here.
5. Use `Hybrid Router` only where parity or oracle closure still matters more than raw breadth.
@@ -1,7 +1,7 @@
{
"scope": "vedastro_parity_matrix",
"schema_version": 1,
"generated_at": "2026-06-28T08:31:52.958980+00:00",
"generated_at": "2026-06-28T23:49:39.845848+00:00",
"summary": {
"row_count": 13,
"p0_count": 11,
@@ -16,6 +16,14 @@
"new_local_impl": 1,
"external_evidence_only": 1
},
"fastest_path_lane_counts": {
"official_python_bridge": 3,
"hybrid_router": 1,
"local_native_preferred": 5,
"official_mcp": 1,
"rest_adapter": 2,
"external_evidence_only": 1
},
"local_registry_technique_count": 89
},
"boundary": {
@@ -36,10 +44,12 @@
],
"can_call_vedastro": true,
"recommended_path": "hybrid_local_plus_vedastro",
"fastest_path_lane": "official_python_bridge",
"priority": "P0",
"license_boundary": "local_native_or_external_oracle",
"adjudicator_use": "secondary",
"gap_notes": "Annual modules exist; yearly career/wealth/month windows need stronger strict-workflow integration."
"gap_notes": "Annual modules exist; yearly career/wealth/month windows need stronger strict-workflow integration.",
"route_notes": "Use Python bridge for breadth, but keep year-chart reasoning and labels local."
},
{
"vedastro_capability": "Ayanamsa Selection",
@@ -51,10 +61,12 @@
],
"can_call_vedastro": true,
"recommended_path": "hybrid_local_plus_vedastro",
"fastest_path_lane": "hybrid_router",
"priority": "P0",
"license_boundary": "external_service_or_clean_room_only",
"adjudicator_use": "oracle_only",
"gap_notes": "Local Lahiri path is usable, but broad ayanamsa parity and public comparison artifacts remain incomplete."
"gap_notes": "Local Lahiri path is usable, but broad ayanamsa parity and public comparison artifacts remain incomplete.",
"route_notes": "Prefer local ayanamsa controls for production and use VedAstro only as parity/oracle evidence."
},
{
"vedastro_capability": "Prashna / Horary",
@@ -68,10 +80,12 @@
],
"can_call_vedastro": true,
"recommended_path": "local_native",
"fastest_path_lane": "local_native_preferred",
"priority": "P0",
"license_boundary": "local_native_or_clean_room",
"adjudicator_use": "secondary",
"gap_notes": "Horary modules exist but are not yet a first-class question adjudicator route."
"gap_notes": "Horary modules exist but are not yet a first-class question adjudicator route.",
"route_notes": "No need to outsource core horary math while local modules already exist."
},
{
"vedastro_capability": "Jaimini / Chara Dasha",
@@ -87,10 +101,12 @@
],
"can_call_vedastro": true,
"recommended_path": "local_native",
"fastest_path_lane": "local_native_preferred",
"priority": "P0",
"license_boundary": "local_native_mit_attribution_for_reused_parts",
"adjudicator_use": "secondary",
"gap_notes": "Core Jaimini exists; mission/career/marriage quality adjudicator folding is not yet exhaustive."
"gap_notes": "Core Jaimini exists; mission/career/marriage quality adjudicator folding is not yet exhaustive.",
"route_notes": "Keep Jaimini native; external engines help only as spot-check evidence."
},
{
"vedastro_capability": "Report Rendering",
@@ -104,10 +120,12 @@
],
"can_call_vedastro": false,
"recommended_path": "new_local_impl",
"fastest_path_lane": "local_native_preferred",
"priority": "P0",
"license_boundary": "local_native",
"adjudicator_use": "not_used",
"gap_notes": "HTML/PDF artifact path exists; polished SVG/PDF chart rendering and cloud-scale report production are not finished."
"gap_notes": "HTML/PDF artifact path exists; polished SVG/PDF chart rendering and cloud-scale report production are not finished.",
"route_notes": "Rendering is a local product concern, not a VedAstro dependency."
},
{
"vedastro_capability": "Synastry / Ashtakoot",
@@ -121,10 +139,12 @@
],
"can_call_vedastro": true,
"recommended_path": "local_native",
"fastest_path_lane": "local_native_preferred",
"priority": "P0",
"license_boundary": "local_native_mit_attribution_for_reused_parts",
"adjudicator_use": "secondary",
"gap_notes": "Matching modules exist and API-backed; relationship adjudicator still needs a formal bridge."
"gap_notes": "Matching modules exist and API-backed; relationship adjudicator still needs a formal bridge.",
"route_notes": "Local matching is already stronger than a thin external call unless you need an oracle comparison."
},
{
"vedastro_capability": "MCP / API Surface",
@@ -134,14 +154,17 @@
"mcp_server.py",
"jyotish_api_server.py",
"strict workflows",
"vedastro_service_adapter.py"
"vedastro_service_adapter.py",
"vedastro_official_mcp_bridge.py"
],
"can_call_vedastro": true,
"recommended_path": "hybrid_local_plus_vedastro",
"fastest_path_lane": "official_mcp",
"priority": "P0",
"license_boundary": "external_service_or_local_native",
"adjudicator_use": "primary",
"gap_notes": "Local API/MCP surfaces exist; VedAstro live adapter needs endpoint-backed smoke tests and provenance capture."
"gap_notes": "Local API/MCP surfaces exist and the official public MCP bridge is live; REST adapter official endpoint smoke still depends on configured endpoint-backed execution.",
"route_notes": "If official MCP is available, that is the fastest direct agent path; otherwise fall back to local REST adapter."
},
{
"vedastro_capability": "Ashtakavarga",
@@ -155,10 +178,12 @@
],
"can_call_vedastro": true,
"recommended_path": "hybrid_local_plus_vedastro",
"fastest_path_lane": "official_python_bridge",
"priority": "P0",
"license_boundary": "local_native_or_external_oracle",
"adjudicator_use": "secondary",
"gap_notes": "SAV/BAV is in production; PAV/Sodhita/Kakshya bridges need continued regression before being dominant labels."
"gap_notes": "SAV/BAV is in production; PAV/Sodhita/Kakshya bridges need continued regression before being dominant labels.",
"route_notes": "Use the Python bridge for broad calculator access while local strict workflows stay authoritative."
},
{
"vedastro_capability": "Shadbala",
@@ -172,10 +197,12 @@
],
"can_call_vedastro": true,
"recommended_path": "hybrid_local_plus_vedastro",
"fastest_path_lane": "official_python_bridge",
"priority": "P0",
"license_boundary": "local_native_or_external_oracle",
"adjudicator_use": "secondary",
"gap_notes": "Local component-aware cap exists; absolute external oracle closure is still incomplete."
"gap_notes": "Local component-aware cap exists; absolute external oracle closure is still incomplete.",
"route_notes": "Broad strength calculators are easiest through the Python bridge, then folded back as oracle evidence."
},
{
"vedastro_capability": "EventsAtRange / Life Event Graph",
@@ -189,10 +216,12 @@
],
"can_call_vedastro": true,
"recommended_path": "hybrid_local_plus_vedastro",
"fastest_path_lane": "rest_adapter",
"priority": "P0",
"license_boundary": "external_service_or_clean_room_only",
"adjudicator_use": "oracle_only",
"gap_notes": "Local timing modules exist, but a high-frequency day/hour event graph is not yet a local productized radar."
"gap_notes": "Local timing modules exist, but a high-frequency day/hour event graph is not yet a local productized radar.",
"route_notes": "Use official REST adapter first for range scans; keep local adjudicator as the reasoning layer."
},
{
"vedastro_capability": "D1-D60 Divisional Charts",
@@ -206,10 +235,12 @@
],
"can_call_vedastro": true,
"recommended_path": "local_native",
"fastest_path_lane": "local_native_preferred",
"priority": "P0",
"license_boundary": "local_native_or_clean_room",
"adjudicator_use": "primary",
"gap_notes": "Local varga coverage is strong; keep VedAstro/PyJHora as benchmark evidence rather than replacing local math."
"gap_notes": "Local varga coverage is strong; keep VedAstro/PyJHora as benchmark evidence rather than replacing local math.",
"route_notes": "Do not pay external-call cost here; local engine is already the primary route."
},
{
"vedastro_capability": "Birth Time ML / Rectification Assistant",
@@ -222,10 +253,12 @@
],
"can_call_vedastro": true,
"recommended_path": "hybrid_local_plus_vedastro",
"fastest_path_lane": "rest_adapter",
"priority": "P1",
"license_boundary": "external_service_or_local_native",
"adjudicator_use": "secondary",
"gap_notes": "Local rectification exists; ML parity with VedAstro-style service behavior is not established."
"gap_notes": "Local rectification exists; ML parity with VedAstro-style service behavior is not established.",
"route_notes": "Use VedAstro externally only as supporting evidence; local rectification gate stays in control."
},
{
"vedastro_capability": "Numerology / Non-Jyotish Tools",
@@ -234,10 +267,12 @@
"local_assets": [],
"can_call_vedastro": true,
"recommended_path": "external_evidence_only",
"fastest_path_lane": "external_evidence_only",
"priority": "P2",
"license_boundary": "external_service_only",
"adjudicator_use": "not_used",
"gap_notes": "Adjacent product feature; not required for Jyotish adjudicator depth."
"gap_notes": "Adjacent product feature; not required for Jyotish adjudicator depth.",
"route_notes": "Do not implement locally unless it becomes product-critical."
}
]
}
+17 -16
View File
@@ -1,6 +1,6 @@
# VedAstro Parity Matrix
- Generated: `2026-06-28T08:31:52.958980+00:00`
- Generated: `2026-06-28T23:49:39.845848+00:00`
- Rows: `13`
- P0 rows: `11`
- Local registry technique count: `89`
@@ -13,24 +13,25 @@ VedAstro calls are external adapter evidence until a capability is promoted by l
- Local status counts: `{"covered": 4, "missing": 1, "partial": 8}`
- Recommended path counts: `{"external_evidence_only": 1, "hybrid_local_plus_vedastro": 7, "local_native": 4, "new_local_impl": 1}`
- Fastest path lane counts: `{"external_evidence_only": 1, "hybrid_router": 1, "local_native_preferred": 5, "official_mcp": 1, "official_python_bridge": 3, "rest_adapter": 2}`
## Matrix
| VedAstro capability | Category | Local status | Path | Priority | Adjudicator use | Local assets | Gap notes |
|---|---|---:|---|---:|---|---|---|
| Tajika Annual | annual_prediction | partial | hybrid_local_plus_vedastro | P0 | secondary | tajika.py, varshaphala.py, sahams, solar_return | Annual modules exist; yearly career/wealth/month windows need stronger strict-workflow integration. |
| Ayanamsa Selection | ephemeris_policy | partial | hybrid_local_plus_vedastro | P0 | oracle_only | ayanamsa_utils, ephemeris_adapter_contract | Local Lahiri path is usable, but broad ayanamsa parity and public comparison artifacts remain incomplete. |
| Prashna / Horary | horary | covered | local_native | P0 | secondary | prashna.py, kp_system.py, upagraha_gulika_maandi, sphuta_trisphuta_family | Horary modules exist but are not yet a first-class question adjudicator route. |
| Jaimini / Chara Dasha | jaimini | covered | local_native | P0 | secondary | jaimini.py, AK, DK, UL, Chara Dasha, Jaimini marriage bridge v1 | Core Jaimini exists; mission/career/marriage quality adjudicator folding is not yet exhaustive. |
| Report Rendering | presentation | partial | new_local_impl | P0 | not_used | report_artifact API, report_builder.py, chart_renderer.py, jyotish-app export | HTML/PDF artifact path exists; polished SVG/PDF chart rendering and cloud-scale report production are not finished. |
| Synastry / Ashtakoot | relationship_matching | covered | local_native | P0 | secondary | synastry.py, ashtakoot.py, 36-point Ashtakoot, 16-factor compatibility | Matching modules exist and API-backed; relationship adjudicator still needs a formal bridge. |
| MCP / API Surface | service_surface | partial | hybrid_local_plus_vedastro | P0 | primary | mcp_server.py, jyotish_api_server.py, strict workflows, vedastro_service_adapter.py | Local API/MCP surfaces exist; VedAstro live adapter needs endpoint-backed smoke tests and provenance capture. |
| Ashtakavarga | strength | partial | hybrid_local_plus_vedastro | P0 | secondary | ashtakavarga, ashtakavarga_pav, ashtakavarga_sodhita, finance_ashtakavarga_bridge | SAV/BAV is in production; PAV/Sodhita/Kakshya bridges need continued regression before being dominant labels. |
| Shadbala | strength | partial | hybrid_local_plus_vedastro | P0 | secondary | shadbala, shadbala_advanced, shadbala_component_cap, oracle_shadbala_queue | Local component-aware cap exists; absolute external oracle closure is still incomplete. |
| EventsAtRange / Life Event Graph | timing_range_scan | partial | hybrid_local_plus_vedastro | P0 | oracle_only | transit_trigger, dasha, narayana_dasha, vedastro_service_adapter.range_scan | Local timing modules exist, but a high-frequency day/hour event graph is not yet a local productized radar. |
| D1-D60 Divisional Charts | varga | covered | local_native | P0 | primary | varga, varga_full, shodasavarga, divisional_charts_extended | Local varga coverage is strong; keep VedAstro/PyJHora as benchmark evidence rather than replacing local math. |
| Birth Time ML / Rectification Assistant | birth_time_rectification | partial | hybrid_local_plus_vedastro | P1 | secondary | birth_time_rectifier.py, rectification_gate, jyotish-app rectification | Local rectification exists; ML parity with VedAstro-style service behavior is not established. |
| Numerology / Non-Jyotish Tools | adjacent_tools | missing | external_evidence_only | P2 | not_used | - | Adjacent product feature; not required for Jyotish adjudicator depth. |
| VedAstro capability | Category | Local status | Path | Fastest lane | Priority | Adjudicator use | Local assets | Gap notes |
|---|---|---:|---|---|---:|---|---|---|
| Tajika Annual | annual_prediction | partial | hybrid_local_plus_vedastro | official_python_bridge | P0 | secondary | tajika.py, varshaphala.py, sahams, solar_return | Annual modules exist; yearly career/wealth/month windows need stronger strict-workflow integration. |
| Ayanamsa Selection | ephemeris_policy | partial | hybrid_local_plus_vedastro | hybrid_router | P0 | oracle_only | ayanamsa_utils, ephemeris_adapter_contract | Local Lahiri path is usable, but broad ayanamsa parity and public comparison artifacts remain incomplete. |
| Prashna / Horary | horary | covered | local_native | local_native_preferred | P0 | secondary | prashna.py, kp_system.py, upagraha_gulika_maandi, sphuta_trisphuta_family | Horary modules exist but are not yet a first-class question adjudicator route. |
| Jaimini / Chara Dasha | jaimini | covered | local_native | local_native_preferred | P0 | secondary | jaimini.py, AK, DK, UL, Chara Dasha, Jaimini marriage bridge v1 | Core Jaimini exists; mission/career/marriage quality adjudicator folding is not yet exhaustive. |
| Report Rendering | presentation | partial | new_local_impl | local_native_preferred | P0 | not_used | report_artifact API, report_builder.py, chart_renderer.py, jyotish-app export | HTML/PDF artifact path exists; polished SVG/PDF chart rendering and cloud-scale report production are not finished. |
| Synastry / Ashtakoot | relationship_matching | covered | local_native | local_native_preferred | P0 | secondary | synastry.py, ashtakoot.py, 36-point Ashtakoot, 16-factor compatibility | Matching modules exist and API-backed; relationship adjudicator still needs a formal bridge. |
| MCP / API Surface | service_surface | partial | hybrid_local_plus_vedastro | official_mcp | P0 | primary | mcp_server.py, jyotish_api_server.py, strict workflows, vedastro_service_adapter.py, vedastro_official_mcp_bridge.py | Local API/MCP surfaces exist and the official public MCP bridge is live; REST adapter official endpoint smoke still depends on configured endpoint-backed execution. |
| Ashtakavarga | strength | partial | hybrid_local_plus_vedastro | official_python_bridge | P0 | secondary | ashtakavarga, ashtakavarga_pav, ashtakavarga_sodhita, finance_ashtakavarga_bridge | SAV/BAV is in production; PAV/Sodhita/Kakshya bridges need continued regression before being dominant labels. |
| Shadbala | strength | partial | hybrid_local_plus_vedastro | official_python_bridge | P0 | secondary | shadbala, shadbala_advanced, shadbala_component_cap, oracle_shadbala_queue | Local component-aware cap exists; absolute external oracle closure is still incomplete. |
| EventsAtRange / Life Event Graph | timing_range_scan | partial | hybrid_local_plus_vedastro | rest_adapter | P0 | oracle_only | transit_trigger, dasha, narayana_dasha, vedastro_service_adapter.range_scan | Local timing modules exist, but a high-frequency day/hour event graph is not yet a local productized radar. |
| D1-D60 Divisional Charts | varga | covered | local_native | local_native_preferred | P0 | primary | varga, varga_full, shodasavarga, divisional_charts_extended | Local varga coverage is strong; keep VedAstro/PyJHora as benchmark evidence rather than replacing local math. |
| Birth Time ML / Rectification Assistant | birth_time_rectification | partial | hybrid_local_plus_vedastro | rest_adapter | P1 | secondary | birth_time_rectifier.py, rectification_gate, jyotish-app rectification | Local rectification exists; ML parity with VedAstro-style service behavior is not established. |
| Numerology / Non-Jyotish Tools | adjacent_tools | missing | external_evidence_only | external_evidence_only | P2 | not_used | - | Adjacent product feature; not required for Jyotish adjudicator depth. |
## Next Actions