feat: sync external source tier governance
This commit is contained in:
@@ -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())
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
Reference in New Issue
Block a user