docs: add authoritative oss jyotish intake

This commit is contained in:
732642856
2026-07-19 20:35:08 +08:00
parent 837ce316b1
commit eefec455ed
3 changed files with 165 additions and 1 deletions
@@ -0,0 +1,95 @@
{
"created_at": "2026-07-19",
"next_actions": [
"pin commit/hash for each source before adding as oracle artifact",
"prefer existing local mirrors before fetching new code",
"never copy AGPL/GPL into commercial runtime",
"store raw input/output/hash for every observation"
],
"production_tuning_allowed": false,
"scope": "authoritative_oss_jyotish_source_intake",
"sources": [
{
"commercial_action": "pin_commit_and_compare_fields",
"license": "MIT",
"name": "northtara/jyotishganit",
"truth_status": "observation_not_final_truth",
"url": "https://github.com/northtara/jyotishganit",
"use": "local_oracle_observation_for_birth_chart_divisional_panchanga_shadbala"
},
{
"commercial_action": "hash KP tables/files before reuse",
"license": "check_repo_file_before_copy",
"name": "diliprk/VedicAstro",
"truth_status": "source_candidate_requires_hash",
"url": "https://github.com/diliprk/VedicAstro",
"use": "KP star/sub-lord/significator reference candidate"
},
{
"commercial_action": "keep adapter probe metadata/raw only",
"license": "MIT",
"name": "VicharaVandana/jyotishyamitra",
"truth_status": "independent_observation_not_truth",
"url": "https://github.com/VicharaVandana/jyotishyamitra",
"use": "independent package probe for bala/ashtakavarga/divisional/dasha field surface"
},
{
"commercial_action": "retain raw/hash and do not promote to shadbala truth",
"license": "Apache-2.0",
"name": "vedika-io/xalen-ephemeris",
"truth_status": "formula_isolation_oracle",
"url": "https://github.com/vedika-io/xalen-ephemeris",
"use": "formula isolation oracle for ephemeris/varga separation"
},
{
"commercial_action": "do_not_vendor_or_runtime_depend",
"license": "AGPL-3.0",
"name": "naturalstupid/PyJHora",
"truth_status": "license_isolated_oracle",
"url": "https://github.com/naturalstupid/PyJHora",
"use": "black-box oracle/fixture only"
},
{
"commercial_action": "hosted remains blocked without deployment identity",
"license": "check_repo_components",
"name": "VedAstro/VedAstro",
"truth_status": "hosted_identity_blocked",
"url": "https://github.com/VedAstro/VedAstro",
"use": "hosted observation and possible self-host candidate"
},
{
"commercial_action": "feature_gap_reference_only_until file-level license and formula audit",
"license": "MIT per search result",
"name": "SV-stark/jyotish-flutter-library-fork",
"truth_status": "feature_benchmark_only",
"url": "https://github.com/SV-stark/jyotish-flutter-library-fork",
"use": "feature-surface benchmark for D1-D60/D249/Ashtakavarga/KP/Jaimini/Panchanga/Muhurta"
},
{
"commercial_action": "do_not_copy_until_license_verified",
"license": "unknown_until_repo_license_verified",
"name": "pandaypr/VedicAstroEngineLite",
"truth_status": "feature_benchmark_only",
"url": "https://github.com/pandaypr/VedicAstroEngineLite",
"use": "feature-surface benchmark for Shodashavarga/Shadbala/Vimsopaka/Ishta-Kashta"
},
{
"commercial_action": "do_not_copy_into_commercial_runtime",
"license": "GPL-2.0-or-later per search result",
"name": "kunjara/jyotish",
"truth_status": "license_restricted_reference_only",
"url": "https://github.com/kunjara/jyotish",
"use": "historical PHP calculation reference"
},
{
"commercial_action": "product_surface_reference_only",
"license": "MIT per search result",
"name": "RoxyAPI/jyotish-vedic-astrology-app",
"truth_status": "feature_benchmark_only",
"url": "https://github.com/RoxyAPI/jyotish-vedic-astrology-app",
"use": "product/API feature benchmark for Panchang/Ashtakoot/Vimshottari/Dosha"
}
],
"status": "source_intake_v1",
"truth_boundary": "Open-source projects can provide reusable code, field inventories, fixtures, or observation oracles; they do not become final truth unless version, license, input contract and worked-example parity are archived."
}
@@ -5,7 +5,7 @@
"production_tuning_allowed": false,
"boundary": "Index of current governance packets only. Raw oracle artifacts remain in references/oracle/artifacts and are not all duplicated here.",
"summary": {
"packet_count": 45,
"packet_count": 46,
"blocked_or_partial_count": 40,
"human_review_required_count": 1
},
@@ -369,6 +369,14 @@
"claim_status": "partial",
"consumer_policy": "research_to_commercial_contract_only",
"claim_boundary": "40 generic-only Dn rows require source/formula/oracle closure or remain hidden generic fallback."
},
{
"packet_id": "authoritative_oss_jyotish_source_intake",
"path": "references/oracle/authoritative_oss_jyotish_source_intake_2026_07_19.json",
"domain": "oss_source_reuse_governance",
"claim_status": "source_intake_only",
"consumer_policy": "pin_hash_license_gate_before_runtime_use",
"claim_boundary": "Open-source Jyotish projects may provide source candidates, probes, raw artifacts, and worked-example leads; they are not final truth until license, commit/hash, input contract, and field-level oracle gates close."
}
]
}
@@ -0,0 +1,61 @@
import json
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
INTAKE = ROOT / "references/oracle/authoritative_oss_jyotish_source_intake_2026_07_19.json"
INDEX = ROOT / "references/oracle/evidence_packet_index_2026_07_19.json"
def _load(path: Path):
return json.loads(path.read_text(encoding="utf-8"))
def test_oss_intake_keeps_source_candidates_out_of_production_truth():
data = _load(INTAKE)
assert data["scope"] == "authoritative_oss_jyotish_source_intake"
assert data["production_tuning_allowed"] is False
truth_boundary = data["truth_boundary"].lower()
assert "final truth" in truth_boundary
assert "do not become" in truth_boundary or "not final truth" in truth_boundary
by_name = {source["name"]: source for source in data["sources"]}
for required in (
"northtara/jyotishganit",
"VicharaVandana/jyotishyamitra",
"vedika-io/xalen-ephemeris",
"naturalstupid/PyJHora",
"VedAstro/VedAstro",
):
assert required in by_name
for source in data["sources"]:
truth_status = source["truth_status"].lower()
assert truth_status != "final_truth"
assert "ready_truth" not in truth_status
def test_copyleft_sources_are_not_vendorable_in_commercial_runtime():
data = _load(INTAKE)
restricted = [
source
for source in data["sources"]
if source.get("license", "").startswith(("AGPL", "GPL"))
]
assert restricted
for source in restricted:
action = source["commercial_action"].lower()
assert "do_not" in action or "isolated" in action or "separate" in action
def test_oss_intake_is_registered_in_evidence_packet_index():
index = _load(INDEX)
packets = {packet["packet_id"]: packet for packet in index["packets"]}
packet = packets["authoritative_oss_jyotish_source_intake"]
assert packet["path"] == INTAKE.relative_to(ROOT).as_posix()
assert packet["claim_status"] == "source_intake_only"
assert "not final truth" in packet["claim_boundary"].lower()
assert "pin" in packet["consumer_policy"]