sync: import panchanga closure packets
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
# Panchanga local ↔ jyotishganit comparison — TEMCQ-061
|
||||
|
||||
Date: 2026-07-21
|
||||
|
||||
This packet closes the first local comparison step for the Panchanga schema ticket without writing a new Panchanga algorithm.
|
||||
|
||||
## Result
|
||||
|
||||
- Local method: `scripts/muhurta.py::calc_panchanga`
|
||||
- Case: Steve Jobs
|
||||
- Compared fields: `vaara`, `tithi`, `nakshatra`, `yoga`, `karana`
|
||||
- Result: 4 exact matches + 1 naming alias
|
||||
- Truth upgrade: 0
|
||||
|
||||
## Field comparison
|
||||
|
||||
| Field | Local | jyotishganit | Status |
|
||||
|---|---|---|---|
|
||||
| vaara | Thursday | Thursday | within_tolerance |
|
||||
| tithi | Shukla Tritiya | Shukla Tritiya | within_tolerance |
|
||||
| nakshatra | Uttara Bhadrapada | Uttara Bhadrapada | within_tolerance |
|
||||
| yoga | Shubha | Shubha | within_tolerance |
|
||||
| karana | Garija | Gara | alias_match |
|
||||
|
||||
`Gara` and `Garija` are recorded as a naming alias, not a formula mismatch.
|
||||
|
||||
## Boundary
|
||||
|
||||
This is still `research_observation_only`. It does not upgrade Panchanga to global truth because VedAstro and PyJHora/JHora five-field normalized packets are not pinned for this same comparison, and sunrise-relative semantics still need multi-case closure.
|
||||
@@ -0,0 +1,26 @@
|
||||
# Panchanga TEMCQ-061 schema packet — 2026-07-21
|
||||
|
||||
## Result
|
||||
|
||||
- Status: `schema_mapping_required`
|
||||
- Normalized fields ready: `0`
|
||||
- Truth upgrades: `0`
|
||||
|
||||
## Observed jyotishganit raw
|
||||
|
||||
- Vaara: Thursday
|
||||
- Tithi: Shukla Tritiya
|
||||
- Nakshatra: Uttara Bhadrapada
|
||||
- Yoga: Shubha
|
||||
- Karana: Gara
|
||||
|
||||
## Blockers
|
||||
|
||||
- Local archived high-rigor raw lacks a normalized Panchanga field.
|
||||
- PyJHora/JHora normalized Panchanga raw is not archived.
|
||||
- VedAstro shared Panchanga endpoint/method is not pinned.
|
||||
- Naming and calculation conventions must be fixed before field comparison.
|
||||
|
||||
## Boundary
|
||||
|
||||
This is schema mapping only. It does not prove Panchanga parity or production timing readiness.
|
||||
@@ -0,0 +1,27 @@
|
||||
# Three-engine jyotishganit bridge applied — 2026-07-21
|
||||
|
||||
## Status
|
||||
|
||||
- Claim status: `observation_only`
|
||||
- Truth upgrades: `0`
|
||||
- Source selected hash: `4709b8ade84efdea4d0a67c15f3e32cea516a5aa2e8abe3885578feda20cb3f4`
|
||||
|
||||
## Applied rows
|
||||
|
||||
- Existing TEMCQ tickets mapped: `18`
|
||||
- No existing ticket: `1`
|
||||
|
||||
Mapped groups:
|
||||
|
||||
- D2/D4/D9/D10 sign rows → existing `endpoint_or_varga_semantics` tickets.
|
||||
- BAV/SAV rows → existing `ashtakavarga_table_or_contributor_variant` tickets.
|
||||
- Panchanga → no old mismatch ticket; create a separate closure row before comparison.
|
||||
|
||||
## Boundary
|
||||
|
||||
This packet only proves that jyotishganit selected raw can be routed into the
|
||||
existing closure queue. It does not prove formula truth, timing readiness, or
|
||||
commercial production tuning.
|
||||
|
||||
Shadbala remains an explicit gap because the current jyotishganit probe does not
|
||||
expose `shadbala` or `strengths` in selected raw.
|
||||
@@ -5,8 +5,8 @@
|
||||
"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": 118,
|
||||
"blocked_or_partial_count": 51,
|
||||
"packet_count": 120,
|
||||
"blocked_or_partial_count": 52,
|
||||
"human_review_required_count": 3
|
||||
},
|
||||
"packets": [
|
||||
@@ -953,6 +953,22 @@
|
||||
"claim_status": "partial",
|
||||
"consumer_policy": "research_observation_only",
|
||||
"claim_boundary": "Classifies BAV/SAV rows into partial consensus or multi-engine variant; public worked table and method metadata still required."
|
||||
},
|
||||
{
|
||||
"packet_id": "panchanga_temcq_061_schema_packet_2026_07_21",
|
||||
"path": "references/oracle/panchanga_temcq_061_schema_packet_2026_07_21.json",
|
||||
"domain": "three_engine_parity",
|
||||
"claim_status": "open_queue",
|
||||
"consumer_policy": "research_observation_only",
|
||||
"claim_boundary": "Creates TEMCQ-061 Panchanga schema mapping queue from jyotishganit raw; local/PyJHora/VedAstro normalized fields remain missing or unpinned."
|
||||
},
|
||||
{
|
||||
"packet_id": "panchanga_local_jyotishganit_comparison_2026_07_21",
|
||||
"path": "references/oracle/panchanga_local_jyotishganit_comparison_2026_07_21.json",
|
||||
"domain": "three_engine_parity",
|
||||
"claim_status": "partial",
|
||||
"consumer_policy": "research_observation_only",
|
||||
"claim_boundary": "Compares local calc_panchanga against jyotishganit for five Panchanga labels; one Karana alias remains naming-only and no global truth upgrade is made."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
{
|
||||
"scope": "panchanga_local_jyotishganit_comparison",
|
||||
"ticket_id": "TEMCQ-061",
|
||||
"created_at": "2026-07-21",
|
||||
"claim_status": "partial",
|
||||
"truth_matrix_allowed": false,
|
||||
"production_tuning_allowed": false,
|
||||
"algorithm_reuse_policy": "reuse_existing_local_muhurta_calc_panchanga_no_new_algorithm",
|
||||
"source_local_method": "scripts/muhurta.py::calc_panchanga",
|
||||
"source_local_input": {
|
||||
"case": "Steve Jobs",
|
||||
"source_artifact": "references/oracle/artifacts/local_steve_jobs_high_rigor_raw.json",
|
||||
"sun_lon_reconstructed_from_sign_degree": 312.5175,
|
||||
"moon_lon_reconstructed_from_sign_degree": 344.5165,
|
||||
"weekday_convention": "0=Sun ... 6=Sat",
|
||||
"weekday_used": 4,
|
||||
"hour_from_sunrise_used": 6.0
|
||||
},
|
||||
"local_normalized_raw": {
|
||||
"vaara": "Thursday",
|
||||
"tithi": "Shukla Tritiya",
|
||||
"nakshatra": "Uttara Bhadrapada",
|
||||
"yoga": "Shubha",
|
||||
"karana": "Garija"
|
||||
},
|
||||
"jyotishganit_observed_raw": {
|
||||
"@type": "Panchanga",
|
||||
"karana": "Gara",
|
||||
"nakshatra": "Uttara Bhadrapada",
|
||||
"tithi": "Shukla Tritiya",
|
||||
"vaara": "Thursday",
|
||||
"yoga": "Shubha"
|
||||
},
|
||||
"field_comparison": [
|
||||
{
|
||||
"field": "vaara",
|
||||
"local_value": "Thursday",
|
||||
"jyotishganit_value": "Thursday",
|
||||
"status": "within_tolerance",
|
||||
"reason": "same weekday name"
|
||||
},
|
||||
{
|
||||
"field": "tithi",
|
||||
"local_value": "Shukla Tritiya",
|
||||
"jyotishganit_value": "Shukla Tritiya",
|
||||
"status": "within_tolerance",
|
||||
"reason": "same paksha+tithi label"
|
||||
},
|
||||
{
|
||||
"field": "nakshatra",
|
||||
"local_value": "Uttara Bhadrapada",
|
||||
"jyotishganit_value": "Uttara Bhadrapada",
|
||||
"status": "within_tolerance",
|
||||
"reason": "same nakshatra label"
|
||||
},
|
||||
{
|
||||
"field": "yoga",
|
||||
"local_value": "Shubha",
|
||||
"jyotishganit_value": "Shubha",
|
||||
"status": "within_tolerance",
|
||||
"reason": "same yoga label"
|
||||
},
|
||||
{
|
||||
"field": "karana",
|
||||
"local_value": "Garija",
|
||||
"jyotishganit_value": "Gara",
|
||||
"status": "alias_match",
|
||||
"alias_rule": "Gara == Garija",
|
||||
"reason": "naming alias only; not treated as formula mismatch"
|
||||
}
|
||||
],
|
||||
"summary": {
|
||||
"fields_total": 5,
|
||||
"within_tolerance": 4,
|
||||
"alias_match": 1,
|
||||
"formula_mismatch": 0,
|
||||
"unit_mismatch": 0,
|
||||
"truth_upgrades": 0
|
||||
},
|
||||
"still_blocked": [
|
||||
"VedAstro shared Panchanga endpoint/version not pinned",
|
||||
"PyJHora/JHora Panchanga normalized packet not archived for this five-field comparison",
|
||||
"single-case agreement cannot establish global Panchanga oracle truth",
|
||||
"sunrise-relative semantics and local civil-time convention still require explicit multi-case contract"
|
||||
],
|
||||
"supersedes_schema_gap": "references/oracle/panchanga_temcq_061_schema_packet_2026_07_21.json",
|
||||
"boundary": "local_jyotishganit_panchanga_field_observation_not_global_truth"
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"scope": "panchanga_temcq_061_schema_packet",
|
||||
"created_at": "2026-07-21",
|
||||
"ticket_id": "TEMCQ-061",
|
||||
"claim_status": "open_queue",
|
||||
"production_tuning_allowed": false,
|
||||
"truth_matrix_allowed": false,
|
||||
"source_ticket_placeholder": "references/oracle/three_engine_field_status_batch_2026_07_21.json",
|
||||
"source_jyotishganit_probe": "references/oracle/jyotishganit_field_probe_steve_jobs_2026_07_19.json",
|
||||
"closure_status": "schema_mapping_required",
|
||||
"summary": {
|
||||
"normalized_fields_ready": 0,
|
||||
"truth_upgrades": 0,
|
||||
"observed_jyotishganit_field_count": 6
|
||||
},
|
||||
"jyotishganit_observed_raw": {
|
||||
"@type": "Panchanga",
|
||||
"karana": "Gara",
|
||||
"nakshatra": "Uttara Bhadrapada",
|
||||
"tithi": "Shukla Tritiya",
|
||||
"vaara": "Thursday",
|
||||
"yoga": "Shubha"
|
||||
},
|
||||
"engine_field_status": {
|
||||
"local": "archived_panchanga_field_missing",
|
||||
"jyotishganit": "raw_available_not_normalized",
|
||||
"VedAstro": "shared_panchanga_endpoint_not_pinned",
|
||||
"PyJHora_JHora": "not_archived_as_normalized_panchanga"
|
||||
},
|
||||
"required_schema_fields": [
|
||||
"vaara",
|
||||
"tithi",
|
||||
"nakshatra",
|
||||
"yoga",
|
||||
"karana"
|
||||
],
|
||||
"required_contract": [
|
||||
"weekday convention",
|
||||
"tithi naming and paksha convention",
|
||||
"nakshatra spelling/diacritic alias table",
|
||||
"yoga calculation convention",
|
||||
"karana naming convention",
|
||||
"sunrise-relative vs birth-moment rule"
|
||||
],
|
||||
"next_actions": [
|
||||
"archive local normalized Panchanga for the same public case",
|
||||
"locate or generate legal PyJHora/JHora normalized Panchanga raw",
|
||||
"pin VedAstro Panchanga endpoint or mark not available",
|
||||
"then compare exact named fields after alias normalization"
|
||||
],
|
||||
"boundary": "panchanga_schema_mapping_only_no_numeric_truth",
|
||||
"human_report": "docs/research/panchanga_temcq_061_schema_packet_2026_07_21.md"
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
PACKET = ROOT / "references/oracle/panchanga_local_jyotishganit_comparison_2026_07_21.json"
|
||||
INDEX = ROOT / "references/oracle/evidence_packet_index_2026_07_19.json"
|
||||
|
||||
|
||||
def test_panchanga_local_jyotishganit_packet_scope_and_boundary():
|
||||
data = json.loads(PACKET.read_text(encoding="utf-8"))
|
||||
assert data["scope"] == "panchanga_local_jyotishganit_comparison"
|
||||
assert data["ticket_id"] == "TEMCQ-061"
|
||||
assert data["claim_status"] == "partial"
|
||||
assert data["truth_matrix_allowed"] is False
|
||||
assert data["production_tuning_allowed"] is False
|
||||
assert data["algorithm_reuse_policy"] == "reuse_existing_local_muhurta_calc_panchanga_no_new_algorithm"
|
||||
assert data["boundary"] == "local_jyotishganit_panchanga_field_observation_not_global_truth"
|
||||
|
||||
|
||||
def test_panchanga_local_values_reuse_existing_muhurta_engine():
|
||||
data = json.loads(PACKET.read_text(encoding="utf-8"))
|
||||
assert data["source_local_method"] == "scripts/muhurta.py::calc_panchanga"
|
||||
assert data["local_normalized_raw"] == {
|
||||
"vaara": "Thursday",
|
||||
"tithi": "Shukla Tritiya",
|
||||
"nakshatra": "Uttara Bhadrapada",
|
||||
"yoga": "Shubha",
|
||||
"karana": "Garija",
|
||||
}
|
||||
assert data["jyotishganit_observed_raw"] == {
|
||||
"@type": "Panchanga",
|
||||
"karana": "Gara",
|
||||
"nakshatra": "Uttara Bhadrapada",
|
||||
"tithi": "Shukla Tritiya",
|
||||
"vaara": "Thursday",
|
||||
"yoga": "Shubha",
|
||||
}
|
||||
|
||||
|
||||
def test_panchanga_field_comparison_distinguishes_alias_from_truth():
|
||||
data = json.loads(PACKET.read_text(encoding="utf-8"))
|
||||
rows = {row["field"]: row for row in data["field_comparison"]}
|
||||
assert set(rows) == {"vaara", "tithi", "nakshatra", "yoga", "karana"}
|
||||
assert [row["status"] for row in rows.values()].count("within_tolerance") == 4
|
||||
assert rows["karana"]["status"] == "alias_match"
|
||||
assert rows["karana"]["alias_rule"] == "Gara == Garija"
|
||||
assert data["summary"] == {
|
||||
"fields_total": 5,
|
||||
"within_tolerance": 4,
|
||||
"alias_match": 1,
|
||||
"formula_mismatch": 0,
|
||||
"unit_mismatch": 0,
|
||||
"truth_upgrades": 0,
|
||||
}
|
||||
|
||||
|
||||
def test_panchanga_local_comparison_registered_in_evidence_index():
|
||||
index = json.loads(INDEX.read_text(encoding="utf-8"))
|
||||
entry = next(
|
||||
row for row in index["packets"]
|
||||
if row["packet_id"] == "panchanga_local_jyotishganit_comparison_2026_07_21"
|
||||
)
|
||||
assert entry["domain"] == "three_engine_parity"
|
||||
assert entry["claim_status"] == "partial"
|
||||
assert entry["consumer_policy"] == "research_observation_only"
|
||||
@@ -0,0 +1,61 @@
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
PACKET = ROOT / "references/oracle/panchanga_temcq_061_schema_packet_2026_07_21.json"
|
||||
INDEX = ROOT / "references/oracle/evidence_packet_index_2026_07_19.json"
|
||||
|
||||
|
||||
def test_panchanga_temcq_061_records_not_comparable_status():
|
||||
data = json.loads(PACKET.read_text(encoding="utf-8"))
|
||||
|
||||
assert data["scope"] == "panchanga_temcq_061_schema_packet"
|
||||
assert data["ticket_id"] == "TEMCQ-061"
|
||||
assert data["claim_status"] == "open_queue"
|
||||
assert data["truth_matrix_allowed"] is False
|
||||
assert data["closure_status"] == "schema_mapping_required"
|
||||
assert data["summary"]["normalized_fields_ready"] == 0
|
||||
assert data["summary"]["truth_upgrades"] == 0
|
||||
|
||||
|
||||
def test_panchanga_temcq_061_preserves_jyotishganit_raw_fields():
|
||||
data = json.loads(PACKET.read_text(encoding="utf-8"))
|
||||
|
||||
assert data["jyotishganit_observed_raw"] == {
|
||||
"@type": "Panchanga",
|
||||
"karana": "Gara",
|
||||
"nakshatra": "Uttara Bhadrapada",
|
||||
"tithi": "Shukla Tritiya",
|
||||
"vaara": "Thursday",
|
||||
"yoga": "Shubha",
|
||||
}
|
||||
assert data["engine_field_status"]["local"] == "archived_panchanga_field_missing"
|
||||
assert data["engine_field_status"]["VedAstro"] == "shared_panchanga_endpoint_not_pinned"
|
||||
assert data["engine_field_status"]["PyJHora_JHora"] == "not_archived_as_normalized_panchanga"
|
||||
|
||||
|
||||
def test_panchanga_temcq_061_requires_exact_schema_before_comparison():
|
||||
data = json.loads(PACKET.read_text(encoding="utf-8"))
|
||||
|
||||
assert data["required_schema_fields"] == ["vaara", "tithi", "nakshatra", "yoga", "karana"]
|
||||
assert data["required_contract"] == [
|
||||
"weekday convention",
|
||||
"tithi naming and paksha convention",
|
||||
"nakshatra spelling/diacritic alias table",
|
||||
"yoga calculation convention",
|
||||
"karana naming convention",
|
||||
"sunrise-relative vs birth-moment rule"
|
||||
]
|
||||
assert data["boundary"] == "panchanga_schema_mapping_only_no_numeric_truth"
|
||||
|
||||
|
||||
def test_panchanga_temcq_061_is_registered():
|
||||
index = json.loads(INDEX.read_text(encoding="utf-8"))
|
||||
entry = next(
|
||||
row for row in index["packets"]
|
||||
if row["packet_id"] == "panchanga_temcq_061_schema_packet_2026_07_21"
|
||||
)
|
||||
|
||||
assert entry["domain"] == "three_engine_parity"
|
||||
assert entry["claim_status"] == "open_queue"
|
||||
Reference in New Issue
Block a user