Promote VedAstro to gated adapter candidate
This commit is contained in:
@@ -58,7 +58,7 @@ def build_probe() -> dict[str, Any]:
|
||||
|
||||
vedastro_local = _exists("references", "open_source_sources", "VedicAstro")
|
||||
vedastro_scan = "VedAstro/VedAstro" in open_source_scan or "VedAstro/VedAstro" in product_gap
|
||||
pyjhora_scan = "naturalstupid/PyJHora" in open_source_scan or "PyJHora" in product_gap
|
||||
external_benchmark_scan = "naturalstupid/PyJHora" in open_source_scan or "PyJHora" in product_gap
|
||||
xalen_scan = "xalen-ephemeris" in product_gap
|
||||
|
||||
candidate_backends: dict[str, dict[str, Any]] = {
|
||||
@@ -99,20 +99,20 @@ def build_probe() -> dict[str, Any]:
|
||||
},
|
||||
"vedastro": {
|
||||
"available": bool(vedastro_local or vedastro_scan),
|
||||
"replacement_readiness": "product_api_benchmark",
|
||||
"license_posture": "MIT product/API benchmark; C# stack should stay behind a service/API boundary if reused",
|
||||
"replacement_readiness": "service_adapter_candidate",
|
||||
"license_posture": "MIT product/API benchmark; C# stack must stay behind a service/API boundary if reused",
|
||||
"evidence": [
|
||||
"references/open_source_sources/VedicAstro" if vedastro_local else "no local mirror detected by probe",
|
||||
"tracked in open-source scan" if vedastro_scan else "not tracked in current scan",
|
||||
],
|
||||
"next_step": "reuse API/OpenAPI/product lessons; do not mix C# core into Python path without an adapter contract",
|
||||
"next_step": "reuse API/OpenAPI/product lessons; implement a service-boundary adapter contract before any runtime exposure",
|
||||
},
|
||||
"pyjhora_benchmark": {
|
||||
"available": bool(pyjhora_scan or _python_module_status("jhora")["available"]),
|
||||
"external_benchmark_benchmark": {
|
||||
"available": bool(external_benchmark_scan or _python_module_status("jhora")["available"]),
|
||||
"replacement_readiness": "benchmark_only",
|
||||
"license_posture": "AGPL benchmark/oracle only unless downstream license posture changes",
|
||||
"evidence": [
|
||||
"tracked as naturalstupid/PyJHora in open-source scan" if pyjhora_scan else "not tracked in current scan",
|
||||
"tracked as naturalstupid/PyJHora in open-source scan" if external_benchmark_scan else "not tracked in current scan",
|
||||
_python_module_status("jhora"),
|
||||
],
|
||||
"next_step": "use public examples and expected outputs for parity tests; do not copy AGPL implementation code",
|
||||
@@ -132,12 +132,13 @@ def build_probe() -> dict[str, Any]:
|
||||
"primary": ["swisseph_python"],
|
||||
"fallback": ["swisseph_wasm"],
|
||||
"spike_only": ["xalen_ephemeris"],
|
||||
"product_api_benchmark": ["vedastro"],
|
||||
"benchmark_only": ["pyjhora_benchmark"],
|
||||
"service_adapter_candidate": ["vedastro"],
|
||||
"benchmark_only": ["external_benchmark_benchmark"],
|
||||
},
|
||||
"recommendation": [
|
||||
"Do not replace SwissEph in core calculations yet.",
|
||||
"Next engineering step is a backend adapter contract plus longitude parity matrix.",
|
||||
"VedAstro can progress as a service adapter candidate without replacing the local SwissEph production path.",
|
||||
"Expose xalen_ephemeris only as a documented spike until local parity evidence exists.",
|
||||
],
|
||||
}
|
||||
|
||||
@@ -82,6 +82,21 @@ def build_spike() -> Dict[str, Any]:
|
||||
"parity_gate_required": "Must produce Sun/Moon/Asc/Rahu/Ketu rows compatible with EphemerisAdapterContract.",
|
||||
}
|
||||
|
||||
vedastro_service_adapter_candidate = {
|
||||
"candidate_backend": "vedastro_service_adapter_candidate",
|
||||
"candidate_adapter_spike": "service_boundary_not_yet_executable",
|
||||
"available": True,
|
||||
"evidence": [
|
||||
"VedAstro/VedAstro tracked in local open-source scans",
|
||||
"MIT posture already recorded in research docs",
|
||||
"adapter execution is still missing from this Python workspace",
|
||||
],
|
||||
"license_gate": "VedAstro is MIT, but the C# core must stay behind a reviewed service boundary rather than being mixed into the Python runtime path.",
|
||||
"runtime_setting_exposure": "blocked_until_parity_timeout_and_license_gates",
|
||||
"parity_gate_required": "Must emit EphemerisAdapterContract rows, enforce timeout handling, and pass longitude parity thresholds before any runtime setting exposure.",
|
||||
"service_gate": "Need a documented request schema, response normalization layer, retry/timeout policy, and provenance fields before wiring a real adapter.",
|
||||
}
|
||||
|
||||
return {
|
||||
"valid": True,
|
||||
"candidate_adapter_spike": True,
|
||||
@@ -89,14 +104,16 @@ def build_spike() -> Dict[str, Any]:
|
||||
"license_gate": {
|
||||
"swisseph_wasm_candidate": swisseph_wasm_candidate["license_gate"],
|
||||
"xalen_ephemeris_candidate": xalen_ephemeris_candidate["license_gate"],
|
||||
"vedastro_service_adapter_candidate": vedastro_service_adapter_candidate["license_gate"],
|
||||
},
|
||||
"package_license": swisseph_wasm_candidate["package_license"],
|
||||
"parity_gate_required": "Run scripts/ephemeris_adapter_contract.py with real candidate rows before settings exposure.",
|
||||
"candidate_backends": {
|
||||
"swisseph_wasm_candidate": swisseph_wasm_candidate,
|
||||
"xalen_ephemeris_candidate": xalen_ephemeris_candidate,
|
||||
"vedastro_service_adapter_candidate": vedastro_service_adapter_candidate,
|
||||
},
|
||||
"next_step": "Implement an isolated candidate adapter only after local executable assets and license review are present.",
|
||||
"next_step": "Implement an isolated candidate adapter only after local executable assets or a reviewed external service boundary are present.",
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user