feat: sync external source tier governance

This commit is contained in:
732642856
2026-07-20 00:18:18 +08:00
parent 6d4d22630c
commit 421acb78b7
7 changed files with 938 additions and 2 deletions
@@ -561,14 +561,30 @@
"claim_status": "partial",
"consumer_policy": "research_to_commercial_contract_only",
"claim_boundary": "Queues formula/ayanamsa/node/rounding attribution for jyotishganit mismatches; no majority-vote truth."
},
{
"packet_id": "external_source_use_tier_registry_2026_07_20",
"path": "references/oracle/external_source_use_tier_registry_2026_07_20.json",
"domain": "external_source_governance",
"claim_status": "ready_contract",
"consumer_policy": "research_to_commercial_contract_only",
"claim_boundary": "Classifies OSS/web/real-case sources by allowed use tier; does not upgrade any source to oracle truth."
},
{
"packet_id": "high_rigor_closure_gate_snapshot_2026_07_20",
"path": "references/oracle/high_rigor_closure_gate_snapshot_2026_07_20.json",
"domain": "high_rigor_governance",
"claim_status": "blocked",
"consumer_policy": "research_to_commercial_contract_only",
"claim_boundary": "Aggregates current high-rigor gates; blocked/partial gates remain blocked until their evidence packets close."
}
],
"production_tuning_allowed": false,
"scope": "evidence_packet_index",
"status": "active_index_v1",
"summary": {
"packet_count": 70,
"blocked_or_partial_count": 45,
"packet_count": 72,
"blocked_or_partial_count": 46,
"human_review_required_count": 2
}
}
@@ -0,0 +1,104 @@
{
"boundary": "This registry authorizes source usage tiers; it does not close timing, KP cusp, Shadbala/AV, or Muhurta numeric truth.",
"claim_status": "ready_contract",
"created_at": "2026-07-20",
"production_tuning_allowed": false,
"rules": [
"Permissive OSS can be copied only after license, commit, and package hash are pinned.",
"OSS engine agreement is evidence, not final truth, unless external worked examples close the method.",
"Public stories can be shown as similar case references, not used as negative holdout labels.",
"Public PDFs become oracle candidates only when full inputs, settings, numeric expected values, citation, and replay hash exist.",
"Conflicting Shadbala/AV/KP results must be surfaced as method variants, not majority-voted."
],
"scope": "external_source_use_tier_registry",
"sources": [
{
"allowed_use_tier": "permissive_adapter_or_formula_observation",
"can_be_oracle_truth": false,
"can_copy_code": true,
"license_status": "MIT",
"name": "northtara/jyotishganit",
"required_before_truth": [
"pinned commit/package hash",
"same input contract",
"field-level raw output",
"method provenance",
"worked-example or independent oracle arbitration"
],
"source_id": "jyotishganit_mit",
"source_type": "open_source_engine",
"url": "https://github.com/northtara/jyotishganit"
},
{
"allowed_use_tier": "permissive_adapter_or_formula_isolation",
"can_be_oracle_truth": false,
"can_copy_code": true,
"license_status": "Apache-2.0",
"name": "vedika-io/xalen-ephemeris",
"required_before_truth": [
"pinned commit/Cargo.lock hash",
"same ayanamsa/node/timezone contract",
"same raw longitude/JD input",
"component-level formula provenance"
],
"source_id": "xalen_ephemeris_apache",
"source_type": "open_source_ephemeris",
"url": "https://github.com/vedika-io/xalen-ephemeris"
},
{
"allowed_use_tier": "client_wrapper_observation_only",
"can_be_oracle_truth": false,
"can_copy_code": true,
"license_status": "MIT",
"name": "VedAstro.Python",
"required_before_truth": [
"hosted deployment build/version identity",
"raw response hash",
"endpoint/method documentation"
],
"source_id": "vedastro_python_mit",
"source_type": "client_wrapper",
"url": "https://github.com/VedAstro/VedAstro.Python"
},
{
"allowed_use_tier": "manual_oracle_candidate_queue",
"can_be_oracle_truth": false,
"can_copy_code": false,
"license_status": "public_web_candidate_not_license_cleared_for_copying",
"name": "Public KP calculation PDF candidates",
"required_before_truth": [
"full birth/input data",
"ayanamsa/timezone/house system",
"expected cusp/star/sub values",
"citation/page",
"replay artifact hash"
],
"source_id": "public_kp_pdf_candidate",
"source_type": "worked_example_candidate",
"url": "references/oracle/public_worked_example_queue_2026_07_19.json"
},
{
"allowed_use_tier": "case_reference_for_user_explanation",
"can_be_oracle_truth": false,
"can_copy_code": false,
"license_status": "citation_only",
"name": "Public biography/news/event cases",
"required_before_truth": [
"reliable birth record",
"dated positive events",
"explicitly evidenced non-event windows",
"independent human label freeze",
"no tuning on holdout"
],
"source_id": "public_real_case_story",
"source_type": "real_case_reference",
"url": "global_web_search_or_public_dataset"
}
],
"summary": {
"copyable_code_source_count": 3,
"oracle_truth_ready_count": 0,
"source_count": 5
},
"truth_matrix_allowed": false
}
@@ -0,0 +1,562 @@
{
"birth_time_truth_allowed": false,
"boundary": "Snapshot of gate state only; blocked/partial gates remain blocked until their evidence packets close.",
"commercial_sync_allowed": false,
"created_at": "2026-07-20",
"gates": [
{
"claim_boundary": "External numeric worked examples are incomplete for Prashna/Tajika/Saham/Gulika/Sphuta and formula/unit disputed components.",
"evidence": [
{
"artifact": "prashna_tajika_saham_gulika_sphuta_oracle_packet",
"claim_boundary": "This packet records local artifacts, source candidates, and required worked examples. It does not claim external numeric closure.",
"status": "oracle_packet_registry_v1"
},
{
"artifact": "formula_source_knowledge_base",
"claim_boundary": "This registry attaches source/formula/unit/oracle boundaries. It does not by itself prove absolute parity or prediction accuracy.",
"status": "formula_source_registry_v1"
}
],
"gate_id": "external_numeric_oracle",
"status": "blocked"
},
{
"claim_boundary": "Independent human-labeled negative windows are required before verified day/month timing claims.",
"evidence": {
"annotations": [
{
"adjudicator": "",
"annotation_id": "DLH-PILOT-001-75809BC667",
"candidate_label": "target_event",
"domain": "marriage",
"end": "1991-03-18",
"event_absent_assertion": "",
"event_description": "Marriage to Laurene Powell Jobs",
"final_label": null,
"frozen_before_scoring": false,
"independent_human_reviewed": false,
"notes": "",
"review_decision": "pending",
"source_quote_or_summary": "",
"source_urls": [
"https://allaboutstevejobs.com/bio/timeline",
"https://people.com/who-is-laurene-powell-jobs-steve-jobs-wife-7502390"
],
"start": "1991-03-18",
"subject_id": "steve_jobs",
"subject_name": "Steve Jobs",
"time_uncertainty_days": null
},
{
"adjudicator": "",
"annotation_id": "DLH-PILOT-002-2E68252F11",
"candidate_label": "no_target_event",
"domain": "marriage",
"end": "1990-09-30",
"event_absent_assertion": "Candidate non-marriage interval before the documented March 18, 1991 marriage; must be independently checked against biography/timeline sources.",
"event_description": "",
"final_label": null,
"frozen_before_scoring": false,
"independent_human_reviewed": false,
"notes": "",
"review_decision": "pending",
"source_quote_or_summary": "",
"source_urls": [
"https://allaboutstevejobs.com/bio/timeline",
"https://people.com/who-is-laurene-powell-jobs-steve-jobs-wife-7502390"
],
"start": "1990-09-01",
"subject_id": "steve_jobs",
"subject_name": "Steve Jobs",
"time_uncertainty_days": null
},
{
"adjudicator": "",
"annotation_id": "DLH-PILOT-003-3B88192D62",
"candidate_label": "no_target_event",
"domain": "marriage",
"end": "1991-06-30",
"event_absent_assertion": "Candidate non-marriage interval after the documented March 18, 1991 marriage; must be independently checked against biography/timeline sources.",
"event_description": "",
"final_label": null,
"frozen_before_scoring": false,
"independent_human_reviewed": false,
"notes": "",
"review_decision": "pending",
"source_quote_or_summary": "",
"source_urls": [
"https://allaboutstevejobs.com/bio/timeline",
"https://people.com/who-is-laurene-powell-jobs-steve-jobs-wife-7502390"
],
"start": "1991-06-01",
"subject_id": "steve_jobs",
"subject_name": "Steve Jobs",
"time_uncertainty_days": null
},
{
"adjudicator": "",
"annotation_id": "DLH-PILOT-004-647CE4536A",
"candidate_label": "target_event",
"domain": "marriage",
"end": "1992-10-03",
"event_absent_assertion": "",
"event_description": "Marriage to Michelle Robinson Obama",
"final_label": null,
"frozen_before_scoring": false,
"independent_human_reviewed": false,
"notes": "",
"review_decision": "pending",
"source_quote_or_summary": "",
"source_urls": [
"https://www.obamalibrary.gov/obamas/first-lady-michelle-obama",
"https://www.whitehousehistory.org/bios/michelle-obama"
],
"start": "1992-10-03",
"subject_id": "barack_obama",
"subject_name": "Barack Obama",
"time_uncertainty_days": null
},
{
"adjudicator": "",
"annotation_id": "DLH-PILOT-005-4B61A2A307",
"candidate_label": "no_target_event",
"domain": "marriage",
"end": "1992-07-31",
"event_absent_assertion": "Candidate non-marriage interval before the documented October 3, 1992 marriage; must be independently checked against relationship/timeline sources.",
"event_description": "",
"final_label": null,
"frozen_before_scoring": false,
"independent_human_reviewed": false,
"notes": "",
"review_decision": "pending",
"source_quote_or_summary": "",
"source_urls": [
"https://www.obamalibrary.gov/obamas/first-lady-michelle-obama",
"https://www.whitehousehistory.org/bios/michelle-obama"
],
"start": "1992-07-01",
"subject_id": "barack_obama",
"subject_name": "Barack Obama",
"time_uncertainty_days": null
},
{
"adjudicator": "",
"annotation_id": "DLH-PILOT-006-260BF5AEBD",
"candidate_label": "no_target_event",
"domain": "marriage",
"end": "1993-01-31",
"event_absent_assertion": "Candidate non-marriage interval after the documented October 3, 1992 marriage; must be independently checked against relationship/timeline sources.",
"event_description": "",
"final_label": null,
"frozen_before_scoring": false,
"independent_human_reviewed": false,
"notes": "",
"review_decision": "pending",
"source_quote_or_summary": "",
"source_urls": [
"https://www.obamalibrary.gov/obamas/first-lady-michelle-obama",
"https://www.whitehousehistory.org/bios/michelle-obama"
],
"start": "1993-01-01",
"subject_id": "barack_obama",
"subject_name": "Barack Obama",
"time_uncertainty_days": null
},
{
"adjudicator": "",
"annotation_id": "DLH-PILOT-007-275F44F8FC",
"candidate_label": "target_event",
"domain": "marriage",
"end": "1903-01-06",
"event_absent_assertion": "",
"event_description": "Marriage to Mileva Marić",
"final_label": null,
"frozen_before_scoring": false,
"independent_human_reviewed": false,
"notes": "",
"review_decision": "pending",
"source_quote_or_summary": "",
"source_urls": [
"https://einstein-website.de/en/timeline/",
"https://www.pbs.org/wgbh/nova/einstein/timeline/"
],
"start": "1903-01-06",
"subject_id": "albert_einstein",
"subject_name": "Albert Einstein",
"time_uncertainty_days": null
},
{
"adjudicator": "",
"annotation_id": "DLH-PILOT-008-5675318BC7",
"candidate_label": "no_target_event",
"domain": "marriage",
"end": "1902-06-30",
"event_absent_assertion": "Candidate non-marriage interval before the documented January 6, 1903 marriage; must be independently checked against timeline/biography sources.",
"event_description": "",
"final_label": null,
"frozen_before_scoring": false,
"independent_human_reviewed": false,
"notes": "",
"review_decision": "pending",
"source_quote_or_summary": "",
"source_urls": [
"https://einstein-website.de/en/timeline/",
"https://www.pbs.org/wgbh/nova/einstein/timeline/"
],
"start": "1902-06-01",
"subject_id": "albert_einstein",
"subject_name": "Albert Einstein",
"time_uncertainty_days": null
},
{
"adjudicator": "",
"annotation_id": "DLH-PILOT-009-0BC3CA37FF",
"candidate_label": "no_target_event",
"domain": "marriage",
"end": "1903-04-30",
"event_absent_assertion": "Candidate non-marriage interval after the documented January 6, 1903 marriage; must be independently checked against timeline/biography sources.",
"event_description": "",
"final_label": null,
"frozen_before_scoring": false,
"independent_human_reviewed": false,
"notes": "",
"review_decision": "pending",
"source_quote_or_summary": "",
"source_urls": [
"https://einstein-website.de/en/timeline/",
"https://www.pbs.org/wgbh/nova/einstein/timeline/"
],
"start": "1903-04-01",
"subject_id": "albert_einstein",
"subject_name": "Albert Einstein",
"time_uncertainty_days": null
}
],
"created_at": "2026-07-19",
"instructions": [
"Do not use candidate_label as final_label.",
"For target_event, verify the event date from public sources.",
"For no_target_event, verify absence in the interval from public sources.",
"Freeze all labels before timing_ranker_blind_eval.py is run.",
"Do not use existing observed control dates for tuning."
],
"production_tuning_allowed": false,
"ready_for_blind_eval": false,
"scope": "day_level_holdout_human_annotation_packet",
"source_report": "references/real_case_calibration/day_level_holdout_v3_pilot_source_queue_report_2026_07_19.json",
"status": "awaiting_independent_human_adjudication",
"summary": {
"annotation_count": 9,
"final_label_count": 0,
"frozen_count": 0,
"negative_candidate_count": 6,
"positive_candidate_count": 3
},
"truth_boundary": "This packet is for human labeling only. It must not be scored until final_label, adjudicator, independent_human_reviewed, and frozen_before_scoring are complete."
},
"gate_id": "independent_negative_holdout",
"status": "blocked"
},
{
"claim_boundary": "KP star/sub-lord, ruling planets and significator probes can support research inspection, but cannot drive precise event timing until exact cusp calculation, external numeric oracle and independent negative holdout validation pass.",
"evidence": {
"boundary": "This contract separates current KP field probes from exact KP cusp timing. Current local significator tables use whole-sign/house-center probe houses and must not be treated as precise KP cusps.",
"claim_boundary": "KP star/sub-lord, ruling planets and significator probes can support research inspection, but cannot drive precise event timing until exact cusp calculation, external numeric oracle and independent negative holdout validation pass.",
"created_at": "2026-07-19",
"current_runtime_cusp_mode": "whole_sign_house_center_probe",
"exact_cusp_status": "blocked_missing_oracle",
"kp_significator_runtime_policy": "supporting_probe_only",
"production_tuning_allowed": false,
"required_exact_cusp_inputs": [
{
"field": "birth_or_question_datetime",
"reason": "KP cusps are time-sensitive and must use the exact event/question timestamp."
},
{
"field": "latitude",
"reason": "House cusps depend on local latitude."
},
{
"field": "longitude",
"reason": "House cusps depend on local longitude and local sidereal time."
},
{
"field": "timezone",
"reason": "Timezone and DST must be explicit before sidereal time/cusp calculation."
},
{
"field": "ayanamsa",
"reason": "KP cusps and star/sub-lord fields require a fixed sidereal setting."
},
{
"field": "house_system",
"reason": "KP typically uses a Placidus-style cusp workflow; the runtime must not silently substitute whole-sign houses."
}
],
"required_oracles": [
{
"claim_boundary": "Needed before exact cusp fields can be marked verified.",
"oracle_id": "kp_cusp_numeric_worked_example",
"required_fields": [
"house_number",
"cusp_longitude",
"sign",
"rasi_lord",
"star_lord",
"sub_lord",
"sub_sub_lord"
],
"status": "missing"
},
{
"claim_boundary": "Needed before ABCD significator tables can be used beyond probe status.",
"oracle_id": "kp_significator_field_example",
"required_fields": [
"planet_significator_A",
"planet_significator_B",
"planet_significator_C",
"planet_significator_D",
"house_significator_A",
"house_significator_B",
"house_significator_C",
"house_significator_D"
],
"status": "missing"
},
{
"claim_boundary": "Needed before KP timing can upgrade from exploratory candidate to verified timing claim.",
"oracle_id": "negative_holdout_timing_set",
"required_fields": [
"positive_event_window",
"negative_non_event_windows",
"blind_ranking_protocol"
],
"status": "missing"
}
],
"safe_runtime_policy": {
"allowed": [
"Expose probe fields with raw hash",
"Use KP fields as downgrade-only or supporting context",
"Show exact-cusp blocker in Technique Audit Table"
],
"blocked": [
"Verified day/month timing claim",
"Birth-time truth claim",
"Commercial precise KP event promise"
]
},
"scope": "kp_cusp_precision_contract",
"status": "contract_v1"
},
"gate_id": "kp_exact_cusp",
"status": "blocked"
},
{
"claim_boundary": "KP, Muhurta, advanced Ashtakavarga and advanced compatibility have registries/probes, but full scoring remains blocked or partial.",
"evidence": [
{
"claim_boundary": "Reference/probe only; exact KP cusp contract exists at references/oracle/kp_cusp_precision_contract_2026_07_19.json, but current runtime remains whole-sign/house-center probe until numeric cusp oracle passes.",
"commercial_sync_status": "blocked_until_oracle",
"domain": "kp_precision_timing",
"external_oracle_status": "oracle_queue_present_awaiting_public_example",
"local_code_status": "precision_contract_present_probe_approximate",
"technique_id": "kp_cusps"
},
{
"claim_boundary": "Reference/probe only; KP star/sub-lord fields are exposed by scripts/kp_precision_timing_probe.py but cannot make precise event claims until exact cusp oracle and holdout gates close.",
"commercial_sync_status": "blocked_until_oracle",
"domain": "kp_precision_timing",
"external_oracle_status": "hash_manifest_present_fixture_missing_or_fixed",
"local_code_status": "minimal_probe_present",
"technique_id": "star_sub_lord"
},
{
"claim_boundary": "Reference/probe only; ruling planets are exposed by scripts/kp_precision_timing_probe.py but cannot drive rectification or timing before exact question-time contract, external oracle and negative holdout gates.",
"commercial_sync_status": "blocked_until_oracle",
"domain": "kp_precision_timing",
"external_oracle_status": "missing_ruling_planets_oracle",
"local_code_status": "minimal_probe_present",
"technique_id": "ruling_planets"
},
{
"claim_boundary": "Reference/probe only; significator ABCD tables are exposed by scripts/kp_precision_timing_probe.py but require exact cusp contract and field-level oracle before runtime use.",
"commercial_sync_status": "blocked_until_oracle",
"domain": "kp_precision_timing",
"external_oracle_status": "missing_significator_oracle",
"local_code_status": "minimal_probe_present",
"technique_id": "kp_significators"
},
{
"claim_boundary": "Research-only until question-time input contract, KP number handling, and external examples are available.",
"commercial_sync_status": "research_only",
"domain": "kp_precision_timing",
"external_oracle_status": "missing",
"local_code_status": "missing_runtime",
"technique_id": "kp_horary"
},
{
"claim_boundary": "Can support day context, but cannot be marketed as full Muhurta scoring.",
"commercial_sync_status": "ready_after_guarded_contract",
"domain": "muhurta",
"external_oracle_status": "partial",
"local_code_status": "present",
"technique_id": "panchanga_base"
},
{
"claim_boundary": "Do not present as auspicious-date selection until Tarabala/Chandrabala/Panchaka/Rahu Kalam weights and examples are validated.",
"commercial_sync_status": "blocked_until_oracle",
"domain": "muhurta",
"external_oracle_status": "missing",
"local_code_status": "missing_runtime",
"technique_id": "full_muhurta_scoring"
},
{
"claim_boundary": "Observation-only until natal Moon matching, Tara sequence, Chandra Bala rules and external examples pass.",
"commercial_sync_status": "blocked_until_oracle",
"domain": "muhurta",
"external_oracle_status": "missing",
"local_code_status": "factor_probe_present",
"technique_id": "tarabala_chandrabala"
},
{
"claim_boundary": "Can be shown as Panchanga interval after sunrise/sunset contract; not a full Muhurta verdict.",
"commercial_sync_status": "ready_after_guarded_contract",
"domain": "muhurta",
"external_oracle_status": "partial",
"local_code_status": "factor_probe_present",
"technique_id": "rahu_yamaganda_gulika_kalam"
},
{
"claim_boundary": "Reference-only until formula source, timezone handling and worked examples close.",
"commercial_sync_status": "blocked_until_oracle",
"domain": "muhurta",
"external_oracle_status": "missing",
"local_code_status": "missing_runtime",
"technique_id": "abhijit_sankranti_vyatipata_vaidhriti"
},
{
"claim_boundary": "Core BAV/SAV can be used with method-variant and parity boundary.",
"commercial_sync_status": "ready_after_guarded_contract",
"domain": "ashtakavarga_advanced_usage",
"external_oracle_status": "partial",
"local_code_status": "present",
"technique_id": "bav_sav_core"
},
{
"claim_boundary": "Observation-only design item; do not use for precise transit timing until source and holdout gates close.",
"commercial_sync_status": "blocked_until_oracle",
"domain": "ashtakavarga_advanced_usage",
"external_oracle_status": "missing",
"local_code_status": "missing_runtime",
"technique_id": "kakshya_transit"
},
{
"claim_boundary": "Research-only until rules, source examples and negative controls are available.",
"commercial_sync_status": "blocked_until_oracle",
"domain": "ashtakavarga_advanced_usage",
"external_oracle_status": "missing",
"local_code_status": "missing_runtime",
"technique_id": "sensitive_transit_nakshatra_rashi"
},
{
"claim_boundary": "Do not infer life events from age/direction lists without verified case calibration.",
"commercial_sync_status": "research_only",
"domain": "ashtakavarga_advanced_usage",
"external_oracle_status": "missing",
"local_code_status": "missing_runtime",
"technique_id": "important_ages_directional_usage"
},
{
"claim_boundary": "Blocked for verified timing until independent negative holdout passes.",
"commercial_sync_status": "blocked_until_oracle",
"domain": "ashtakavarga_advanced_usage",
"external_oracle_status": "missing",
"local_code_status": "missing_runtime",
"technique_id": "annual_sav_timing_scan"
},
{
"claim_boundary": "Usable as compatibility factor, not deterministic marriage outcome.",
"commercial_sync_status": "ready_after_guarded_contract",
"domain": "compatibility",
"external_oracle_status": "partial",
"local_code_status": "present",
"technique_id": "ashtakoota_core"
},
{
"claim_boundary": "Do not claim full top-tier compatibility until planet/Lagna Kuta variants and examples are validated.",
"commercial_sync_status": "blocked_until_oracle",
"domain": "compatibility",
"external_oracle_status": "missing",
"local_code_status": "partial_or_missing",
"technique_id": "extended_koota_planet_lagna"
},
{
"claim_boundary": "Research-only until deduplication, source packet and tests exist.",
"commercial_sync_status": "research_only",
"domain": "compatibility",
"external_oracle_status": "missing",
"local_code_status": "registry_only",
"technique_id": "relationship_combinations_rule_families"
},
{
"claim_boundary": "Observation-only until Ashtakavarga relationship overlay rules and examples close.",
"commercial_sync_status": "blocked_until_oracle",
"domain": "compatibility",
"external_oracle_status": "missing",
"local_code_status": "missing_runtime",
"technique_id": "relationship_av_overlay"
},
{
"claim_boundary": "Western-derived compatibility overlay; keep out of Vedic commercial runtime unless explicitly scoped as cross-system research.",
"commercial_sync_status": "not_for_commercial_runtime",
"domain": "compatibility",
"external_oracle_status": "not_applicable_vedic_core",
"local_code_status": "missing_runtime",
"technique_id": "composite_davidson_charts"
}
],
"gate_id": "full_scoring_contracts",
"status": "partial"
}
],
"next_actions": [
{
"action": "collect_public_numeric_oracle_packets",
"blocked_by": [
"external_numeric_oracle"
],
"target": "Prashna/Tajika/Saham/Gulika/Sphuta and Shadbala/AV disputed components"
},
{
"action": "pre_register_independent_negative_holdout",
"blocked_by": [
"independent_negative_holdout"
],
"target": "day/month timing blind ranking"
},
{
"action": "pin_exact_kp_cusp_oracle",
"blocked_by": [
"kp_exact_cusp"
],
"target": "KP cusp longitude + star/sub/sub-sub worked example"
},
{
"action": "promote_full_scoring_only_after_oracle",
"blocked_by": [
"full_scoring_contracts",
"external_numeric_oracle",
"independent_negative_holdout"
],
"target": "KP/Muhurta/AV/compatibility scoring"
}
],
"overall_status": "blocked",
"production_tuning_allowed": false,
"scope": "high_rigor_closure_gate_snapshot",
"snapshot_hash": "6bd1d7073570245e8a0610c808c5fe3335601e2c49cbc122b57329ec10c56137",
"source_scope": "high_rigor_closure_gate",
"verified_day_month_timing_allowed": false
}
@@ -0,0 +1,134 @@
#!/usr/bin/env python3
"""Classify OSS/web Jyotish sources by allowed verification use."""
from __future__ import annotations
import argparse
import json
from pathlib import Path
from typing import Any
ROOT = Path(__file__).resolve().parents[1]
SOURCES: list[dict[str, Any]] = [
{
"source_id": "jyotishganit_mit",
"name": "northtara/jyotishganit",
"url": "https://github.com/northtara/jyotishganit",
"license_status": "MIT",
"source_type": "open_source_engine",
"allowed_use_tier": "permissive_adapter_or_formula_observation",
"can_copy_code": True,
"can_be_oracle_truth": False,
"required_before_truth": [
"pinned commit/package hash",
"same input contract",
"field-level raw output",
"method provenance",
"worked-example or independent oracle arbitration",
],
},
{
"source_id": "xalen_ephemeris_apache",
"name": "vedika-io/xalen-ephemeris",
"url": "https://github.com/vedika-io/xalen-ephemeris",
"license_status": "Apache-2.0",
"source_type": "open_source_ephemeris",
"allowed_use_tier": "permissive_adapter_or_formula_isolation",
"can_copy_code": True,
"can_be_oracle_truth": False,
"required_before_truth": [
"pinned commit/Cargo.lock hash",
"same ayanamsa/node/timezone contract",
"same raw longitude/JD input",
"component-level formula provenance",
],
},
{
"source_id": "vedastro_python_mit",
"name": "VedAstro.Python",
"url": "https://github.com/VedAstro/VedAstro.Python",
"license_status": "MIT",
"source_type": "client_wrapper",
"allowed_use_tier": "client_wrapper_observation_only",
"can_copy_code": True,
"can_be_oracle_truth": False,
"required_before_truth": [
"hosted deployment build/version identity",
"raw response hash",
"endpoint/method documentation",
],
},
{
"source_id": "public_kp_pdf_candidate",
"name": "Public KP calculation PDF candidates",
"url": "references/oracle/public_worked_example_queue_2026_07_19.json",
"license_status": "public_web_candidate_not_license_cleared_for_copying",
"source_type": "worked_example_candidate",
"allowed_use_tier": "manual_oracle_candidate_queue",
"can_copy_code": False,
"can_be_oracle_truth": False,
"required_before_truth": [
"full birth/input data",
"ayanamsa/timezone/house system",
"expected cusp/star/sub values",
"citation/page",
"replay artifact hash",
],
},
{
"source_id": "public_real_case_story",
"name": "Public biography/news/event cases",
"url": "global_web_search_or_public_dataset",
"license_status": "citation_only",
"source_type": "real_case_reference",
"allowed_use_tier": "case_reference_for_user_explanation",
"can_copy_code": False,
"can_be_oracle_truth": False,
"required_before_truth": [
"reliable birth record",
"dated positive events",
"explicitly evidenced non-event windows",
"independent human label freeze",
"no tuning on holdout",
],
},
]
def build(date: str) -> dict[str, Any]:
return {
"scope": "external_source_use_tier_registry",
"created_at": date,
"claim_status": "ready_contract",
"production_tuning_allowed": False,
"truth_matrix_allowed": False,
"summary": {
"source_count": len(SOURCES),
"copyable_code_source_count": sum(1 for row in SOURCES if row["can_copy_code"]),
"oracle_truth_ready_count": sum(1 for row in SOURCES if row["can_be_oracle_truth"]),
},
"rules": [
"Permissive OSS can be copied only after license, commit, and package hash are pinned.",
"OSS engine agreement is evidence, not final truth, unless external worked examples close the method.",
"Public stories can be shown as similar case references, not used as negative holdout labels.",
"Public PDFs become oracle candidates only when full inputs, settings, numeric expected values, citation, and replay hash exist.",
"Conflicting Shadbala/AV/KP results must be surfaced as method variants, not majority-voted.",
],
"sources": SOURCES,
"boundary": "This registry authorizes source usage tiers; it does not close timing, KP cusp, Shadbala/AV, or Muhurta numeric truth.",
}
def main() -> int:
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--date", default="2026-07-20")
args = parser.parse_args()
print(json.dumps(build(args.date), ensure_ascii=False, indent=2, sort_keys=True))
return 0
if __name__ == "__main__":
raise SystemExit(main())
+47
View File
@@ -0,0 +1,47 @@
#!/usr/bin/env python3
"""Materialize high-rigor closure gate output as a dated evidence snapshot."""
from __future__ import annotations
import argparse
import hashlib
import json
from pathlib import Path
from typing import Any
from scripts.high_rigor_closure_gate import build_report
def stable_json(data: Any) -> str:
return json.dumps(data, ensure_ascii=False, sort_keys=True, separators=(",", ":"), default=str)
def build(date: str) -> dict[str, Any]:
report = build_report()
snapshot = {
"scope": "high_rigor_closure_gate_snapshot",
"created_at": date,
"source_scope": report["scope"],
"overall_status": report["overall_status"],
"production_tuning_allowed": report["production_tuning_allowed"],
"verified_day_month_timing_allowed": report["verified_day_month_timing_allowed"],
"birth_time_truth_allowed": report["birth_time_truth_allowed"],
"commercial_sync_allowed": report["commercial_sync_allowed"],
"gates": report["gates"],
"next_actions": report["next_actions"],
"boundary": "Snapshot of gate state only; blocked/partial gates remain blocked until their evidence packets close.",
}
snapshot["snapshot_hash"] = hashlib.sha256(stable_json(snapshot).encode("utf-8")).hexdigest()
return snapshot
def main() -> int:
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--date", default="2026-07-20")
args = parser.parse_args()
print(json.dumps(build(args.date), ensure_ascii=False, indent=2, sort_keys=True))
return 0
if __name__ == "__main__":
raise SystemExit(main())
@@ -0,0 +1,39 @@
import json
import subprocess
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
ARTIFACT = ROOT / "references/oracle/external_source_use_tier_registry_2026_07_20.json"
INDEX = ROOT / "references/oracle/evidence_packet_index_2026_07_19.json"
def test_external_source_use_tier_registry_blocks_truth_upgrade():
data = json.loads(
subprocess.check_output(
["python3", "scripts/external_source_use_tier_registry.py", "--date", "2026-07-20"],
cwd=ROOT,
text=True,
)
)
assert data["scope"] == "external_source_use_tier_registry"
assert data["claim_status"] == "ready_contract"
assert data["production_tuning_allowed"] is False
assert data["truth_matrix_allowed"] is False
assert data["summary"]["oracle_truth_ready_count"] == 0
def test_external_source_use_tier_registry_has_required_tiers():
data = json.loads(ARTIFACT.read_text(encoding="utf-8"))
tiers = {row["allowed_use_tier"] for row in data["sources"]}
assert "permissive_adapter_or_formula_observation" in tiers
assert "manual_oracle_candidate_queue" in tiers
assert "case_reference_for_user_explanation" in tiers
assert all(row["can_be_oracle_truth"] is False for row in data["sources"])
def test_evidence_index_registers_external_source_use_tier_registry():
packets = {row["packet_id"]: row for row in json.loads(INDEX.read_text(encoding="utf-8"))["packets"]}
packet = packets["external_source_use_tier_registry_2026_07_20"]
assert packet["claim_status"] == "ready_contract"
assert packet["consumer_policy"] == "research_to_commercial_contract_only"
+34
View File
@@ -0,0 +1,34 @@
import json
import subprocess
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
SNAPSHOT = ROOT / "references/oracle/high_rigor_closure_gate_snapshot_2026_07_20.json"
INDEX = ROOT / "references/oracle/evidence_packet_index_2026_07_19.json"
def test_high_rigor_closure_snapshot_generator_writes_blocked_snapshot():
data = json.loads(
subprocess.check_output(
["python3", "scripts/high_rigor_closure_snapshot.py", "--date", "2026-07-20"],
cwd=ROOT,
text=True,
)
)
assert data["scope"] == "high_rigor_closure_gate_snapshot"
assert data["created_at"] == "2026-07-20"
assert data["source_scope"] == "high_rigor_closure_gate"
assert data["overall_status"] == "blocked"
assert data["production_tuning_allowed"] is False
assert data["snapshot_hash"]
def test_high_rigor_closure_snapshot_artifact_and_index_are_present():
data = json.loads(SNAPSHOT.read_text(encoding="utf-8"))
assert data["overall_status"] == "blocked"
gate_ids = {gate["gate_id"] for gate in data["gates"]}
assert {"external_numeric_oracle", "independent_negative_holdout", "kp_exact_cusp", "full_scoring_contracts"} <= gate_ids
packets = {row["packet_id"]: row for row in json.loads(INDEX.read_text(encoding="utf-8"))["packets"]}
assert packets["high_rigor_closure_gate_snapshot_2026_07_20"]["claim_status"] == "blocked"