feat: add rectification input evidence contract

This commit is contained in:
732642856
2026-07-21 22:44:59 +08:00
parent 8df4a74fec
commit 31dc3a9b97
11 changed files with 261 additions and 16 deletions
@@ -11,6 +11,8 @@ from datetime import datetime, timedelta
from pathlib import Path
from typing import Any
from scripts.rectification_input_contract import candidate_input_fingerprint, stability_probe_contract
ROOT = Path(__file__).resolve().parents[1]
ENGINE = ROOT / "scripts" / "jyotish_engine.py"
@@ -63,6 +65,7 @@ def scan_candidate_times(payload: dict[str, Any], *, uncertainty_minutes: int =
"d1_ascendant": asc.get("sign"),
"d1_degree_in_sign": asc.get("degree_in_sign"),
"divisional_ascendants": divisional,
"input_fingerprint": candidate_input_fingerprint(point),
})
signatures = [tuple([row["d1_ascendant"], *row["divisional_ascendants"].values()]) for row in rows]
unavailable_vargas = [varga.upper() for varga in _VARGAS if all(row["divisional_ascendants"][varga.upper()] is None for row in rows)]
@@ -88,6 +91,15 @@ def scan_candidate_times(payload: dict[str, Any], *, uncertainty_minutes: int =
"uncertainty_minutes": uncertainty_minutes,
"step_minutes": step_minutes,
"rows": rows,
"input_contract": {
"version": "rectification-input-v1",
"center_input_fingerprint": candidate_input_fingerprint(payload),
"settings": {
"ayanamsa": str(payload.get("ayanamsa") or "lahiri").lower(),
"node_mode": str(payload.get("node_mode") or "true").lower(),
},
},
"stability_contract": stability_probe_contract(payload),
"transitions": transitions,
"supported_vargas": [varga.upper() for varga in supported_vargas],
"unavailable_vargas": unavailable_vargas,