Promote VedAstro to gated adapter candidate

This commit is contained in:
732642856
2026-06-27 13:10:32 +08:00
parent bc173ba9ee
commit 835c517a48
5 changed files with 94 additions and 13 deletions
@@ -9,7 +9,7 @@ Purpose: make the ephemeris roadmap probeable instead of relying on UI labels or
| `swisseph_python` | Primary local Python API path through `scripts/jyotish_api_server.py` | `primary` | Current Swiss Ephemeris boundary must stay explicit in settings, exports, and docs | Keep as canonical longitude source |
| `swisseph_wasm` | Browser/local-first degradation path through bundled WASM assets and `@swisseph/browser` / `swisseph-wasm` dependencies | `fallback` | Same Swiss Ephemeris boundary as the Python path | Keep as fallback, not a separate accuracy oracle |
| `xalen_ephemeris` | External Apache-2.0 Rust candidate from `vedika-io/xalen-ephemeris` | `spike_only` | Favorable for experiments, but no local adapter or parity matrix exists yet | Do not expose as real runtime replacement until a parity spike passes |
| `vedastro` | MIT full-stack product/API benchmark | `product_api_benchmark` | Can inform API, OpenAPI, chat, Panchanga, and product workflow design; C# core should stay behind an API/service boundary if reused | Reuse product/API ideas, not as a drop-in Python ephemeris |
| `vedastro` | MIT full-stack product/API benchmark and service-boundary adapter candidate | `service_adapter_candidate` | Can inform API, OpenAPI, chat, Panchanga, and product workflow design; C# core should stay behind an API/service boundary if reused | Reuse product/API ideas and progress through an adapter contract, not as a drop-in Python ephemeris |
| `pyjhora_benchmark` | Broad JHora-style behavior/oracle benchmark | `benchmark_only` | AGPL; do not copy implementation code into this app unless the whole downstream license posture is changed | Use only expected outputs, public examples, and behavior comparisons |
## Probe
@@ -31,4 +31,4 @@ The app already records `ephemerisBackend` in calculation settings and export pr
- parity gate: compare Moon, Sun, Ascendant, Rahu/Ketu, and daily boundary cases against `swisseph_python`
- acceptance: document max deltas before any new backend can be selectable as a runtime calculation source
Until that exists, `swisseph_python` remains the production source, `swisseph_wasm` remains the fallback, `xalen_ephemeris` remains a spike candidate, `vedastro` remains a product/API benchmark, and `pyjhora_benchmark` remains an AGPL behavior benchmark only.
Until that exists, `swisseph_python` remains the production source, `swisseph_wasm` remains the fallback, `xalen_ephemeris` remains a spike candidate, `vedastro` remains a gated service-adapter candidate, and `pyjhora_benchmark` remains an AGPL behavior benchmark only.
@@ -27,9 +27,22 @@ That means the WASM path is useful for local/PWA fallback experiments, but it mu
`xalen_ephemeris_candidate` remains the best permissive-direction spike because `vedika-io/xalen-ephemeris` is tracked as Apache-2.0. There is no local executable mirror in this workspace yet, so the current spike status is documentation-only.
## vedastro_service_adapter_candidate
`vedastro_service_adapter_candidate` is now recognized as a formal candidate backend shape, but only through a reviewed external service boundary.
It is still blocked for direct `runtime_setting_exposure` because the workspace does not yet contain:
1. a real adapter executor,
2. timeout / retry policy,
3. normalized parity rows that satisfy `EphemerisAdapterContract`,
4. response provenance fields that make external-service usage auditable.
This keeps VedAstro in the engineering path without pretending that its C# stack is a drop-in local Python replacement.
## Gate
Both candidates are blocked until `parity_gate_required` is satisfied:
All candidates are blocked until `parity_gate_required` is satisfied:
1. Produce rows matching `EphemerisAdapterContract`.
2. Compare against `swisseph_python` baseline rows.