merge origin/staging into api chart subprocess gate (issue #64)
Independent Staging Quality Gate / validate (push) Successful in 13m47s
Independent Staging Quality Gate / publish (push) Successful in 4m5s

Docs-only catch-up; agent-loop rule A.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
This commit is contained in:
Claude
2026-10-15 10:44:32 +08:00
15 changed files with 195 additions and 17 deletions
+14 -1
View File
@@ -2589,12 +2589,24 @@ def _vedastro_runtime_fingerprint() -> dict:
}
def _chart_ascendant_nakshatra(ascendant_data: dict, lon: float) -> dict:
"""Keep the engine's nakshatra fields when /api/chart rebuilds the ascendant."""
fields = {
key: ascendant_data[key]
for key in ('nakshatra', 'nakshatra_pada', 'nakshatra_lord')
if ascendant_data.get(key) not in (None, '')
}
if 'nakshatra' in fields:
return fields
return _load_local_module('jyotish_engine')._nakshatra_fields(lon)
def _build_api_chart_cache_payload(body: dict) -> dict:
import api_scratch_retention as retention
today = body.get('today') or body.get('current_date')
return {
'cache_schema_version': 6,
'cache_schema_version': 7,
'birth': retention.normalize_chart_cache_birth(body),
'calculation': {
'ayanamsa': _request_ayanamsa(body),
@@ -6659,6 +6671,7 @@ class JyotishAPIHandler(BaseHTTPRequestHandler, VedastroEvidenceMixin, SynastryM
'degree': round(asc_lon % 30, 2),
'degree_in_sign': round(asc_lon % 30, 2),
'lon': round(asc_lon, 4),
**_chart_ascendant_nakshatra(ascendant_data, asc_lon),
},
'planets': planets_data, 'houses': houses, 'shadbala': shadbala_summary,
'dasha': {