docs: add authoritative oss jyotish intake
This commit is contained in:
@@ -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"]
|
||||
Reference in New Issue
Block a user