From 1ae97fcc413880ddb5f24ad88908d0d2fc61d125 Mon Sep 17 00:00:00 2001 From: 732642856 <732642856@qq.com> Date: Sun, 19 Jul 2026 15:06:22 +0800 Subject: [PATCH] feat: sync skill truth overlay evidence --- frontend/src/mastra/index.ts | 1 + ...tive_skill_capability_view_2026_07_19.json | 763 ++++++++++++++++++ .../evidence_packet_index_2026_07_19.json | 182 +++++ ...mula_source_knowledge_base_2026_07_19.json | 180 +++++ .../skill_truth_overlay_2026_07_19.json | 66 ++ scripts/skill_truth_overlay_view.py | 65 ++ tests/test_skill_truth_overlay_application.py | 41 + 7 files changed, 1298 insertions(+) create mode 100644 references/oracle/effective_skill_capability_view_2026_07_19.json create mode 100644 references/oracle/evidence_packet_index_2026_07_19.json create mode 100644 references/oracle/formula_source_knowledge_base_2026_07_19.json create mode 100644 references/oracle/skill_truth_overlay_2026_07_19.json create mode 100644 scripts/skill_truth_overlay_view.py create mode 100644 tests/test_skill_truth_overlay_application.py diff --git a/frontend/src/mastra/index.ts b/frontend/src/mastra/index.ts index 5809eba1..b2aef5e9 100644 --- a/frontend/src/mastra/index.ts +++ b/frontend/src/mastra/index.ts @@ -175,6 +175,7 @@ When reference_transparency is present: - When method_variants applies, present parallel methods and their source paths rather than silently picking one result as the only truth. - Treat Shadbala/Ashtakavarga component differences under production_tuning_allowed=false as method boundaries, not absolute calculation errors. Use no_majority_vote and method_variant_not_majority_vote: do not decide truth by engine count, and do not say one school is wrong unless a pinned authoritative worked example is present. - If gender or sex is present in future profile context, use it only for relationship/spouse interpretation language and weighting: gender-specific spouse significators are supplements, not chart-calculation switches. For relationship questions, keep the core stack gender-neutral (7th house, 7th lord, D9, UL, Darakaraka); male charts may supplement Venus, female charts may supplement Jupiter/Mars, and unknown/nonbinary/prefer-not-to-say uses the gender-neutral stack. +- When consulting references/oracle/effective_skill_capability_view_2026_07_19.json or any derived skill map, use effective_status, not registry_status. Do not promote reference_only or blocked techniques into mastered/covered claims. - If should_lead_with_limitations is false, do not lead with limitations. If a limitation is relevant, put it in one short sentence at the end. - Only say the chart calculation failed when hard_blockers is non-empty. - Never claim D2, D11, D9, D10, A10, UL, or Narayana Dasha is missing when it appears in available_layers, chart, or local_layers. diff --git a/references/oracle/effective_skill_capability_view_2026_07_19.json b/references/oracle/effective_skill_capability_view_2026_07_19.json new file mode 100644 index 00000000..9861331b --- /dev/null +++ b/references/oracle/effective_skill_capability_view_2026_07_19.json @@ -0,0 +1,763 @@ +{ + "overlay_count": 8, + "scope": "effective_skill_capability_view", + "technique_count": 94, + "techniques": [ + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "A10 / Karma Pada / Rajya Pada", + "registry_status": "covered", + "technique_id": "a10_karma_pada" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Argala", + "registry_status": "covered", + "technique_id": "argala" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Arudha Lagna (AL) / 镜像上升", + "registry_status": "covered", + "technique_id": "arudha_lagna" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Ashtakavarga", + "registry_status": "covered", + "technique_id": "ashtakavarga" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "ashtakavarga.py calc_prastara_av()", + "registry_status": "covered", + "technique_id": "ashtakavarga_pav" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "ashtakavarga.py calc_sodhita_av()", + "registry_status": "covered", + "technique_id": "ashtakavarga_sodhita" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "ashtakavarga.py calc_yoga_pinda()", + "registry_status": "covered", + "technique_id": "ashtakavarga_yoga_pinda" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Ashtottari Dasha / 108年周期", + "registry_status": "covered", + "technique_id": "ashtottari_dasha" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Avastha", + "registry_status": "covered", + "technique_id": "avastha" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Badhaka / Obstacle House-Lord", + "registry_status": "covered", + "technique_id": "badhaka" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "bhava_bala.py", + "registry_status": "covered", + "technique_id": "bhava_bala" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Bhava Chalit", + "registry_status": "covered", + "technique_id": "bhava_chalit" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Bhrigu Bindu", + "registry_status": "covered", + "technique_id": "bhrigu_bindu" + }, + { + "effective_status": "complete", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Bhrigu Pada Dasha / 足步推进法", + "registry_status": "complete", + "technique_id": "bhrigu_pada_dasha" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "birth_time_rectifier.py", + "registry_status": "covered", + "technique_id": "birth_time_rectifier" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "career_analysis.py", + "registry_status": "covered", + "technique_id": "career_engine" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "case_validator.py", + "registry_status": "covered", + "technique_id": "case_validator" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Chandra Bala / 月亮力", + "registry_status": "covered", + "technique_id": "chandra_bala" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Combustion / Asta", + "registry_status": "covered", + "technique_id": "combustion" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "D10 / Dasamsa", + "registry_status": "covered", + "technique_id": "d10_dasamsa" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "D1 / Rashi", + "registry_status": "covered", + "technique_id": "d1_rashi" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "D9 / Navamsa", + "registry_status": "covered", + "technique_id": "d9_navamsa" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Darakaraka (DK) / 配偶星", + "registry_status": "covered", + "technique_id": "darakaraka" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Dasha Sandhi", + "registry_status": "covered", + "technique_id": "dasha_sandhi" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Deep Varga Avastha / Sayanadi-Shayanadi + D24/D30/D60", + "registry_status": "covered", + "technique_id": "deep_varga_avastha" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Deha / Jeeva Framework", + "registry_status": "covered", + "technique_id": "deha_jeeva" + }, + { + "effective_status": "complete", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Dhana Yoga / 财富瑜伽", + "registry_status": "complete", + "technique_id": "dhana_yoga" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Dispositor Chain / 定位星链", + "registry_status": "covered", + "technique_id": "dispositor_chain" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "divisional_yoga.py", + "registry_status": "covered", + "technique_id": "divisional_yoga" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "22nd Drekkana", + "registry_status": "covered", + "technique_id": "drekkana_22nd" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Gandanta", + "registry_status": "covered", + "technique_id": "gandanta" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Graha Yuddha / Planetary War", + "registry_status": "covered", + "technique_id": "graha_yuddha" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Inter-chart Linkage / 分盘间飞星", + "registry_status": "covered", + "technique_id": "inter_chart_linkage" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Jaimini / Chara Dasha", + "registry_status": "covered", + "technique_id": "jaimini_chara_dasha" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Kaal Sarp Dosha / 时间蛇煞", + "registry_status": "covered", + "technique_id": "kaal_sarp_dosha" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "kakshya.py", + "registry_status": "covered", + "technique_id": "kakshya" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Kalachakra Dasha / 时轮大运", + "registry_status": "covered", + "technique_id": "kalachakra_dasha" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Karakamsha / AK / AmK", + "registry_status": "covered", + "technique_id": "karakamsha_ak_amk" + }, + { + "effective_status": "reference_only", + "overlay_evidence": "references/oracle/technique_promotion_audit_kp_gochara_muhurta_2026_07_19.json", + "overlay_reason": "KP reference exists in backup/docs; no main runtime oracle/contract.", + "public_label": "kp_system.py", + "registry_status": "covered", + "technique_id": "kp_system" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Mangal Dosha / 火星煞", + "registry_status": "covered", + "technique_id": "mangal_dosha" + }, + { + "effective_status": "complete", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Marriage Counting Method / 婚姻计数法", + "registry_status": "complete", + "technique_id": "marriage_counting" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "misconceptions.py", + "registry_status": "covered", + "technique_id": "misconceptions" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Moolatrikona / 原始三方", + "registry_status": "covered", + "technique_id": "moolatrikona" + }, + { + "effective_status": "reference_only", + "overlay_evidence": "references/oracle/technique_promotion_audit_kp_gochara_muhurta_2026_07_19.json", + "overlay_reason": "Panchanga runtime exists, but Muhurta/dashaflow is OSS/reference candidate requiring license/source/oracle audit.", + "public_label": "Muhurta (Panchanga / Auspicious Timing)", + "registry_status": "covered", + "technique_id": "muhurta" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "muhurtha_election.py", + "registry_status": "covered", + "technique_id": "muhurtha" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Muntha / 年运之主 (Tajika)", + "registry_status": "covered", + "technique_id": "muntha" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Nakshatra Advanced / 星宿进阶(Tara Bala + Chandra Bala + Sub-Lord)", + "registry_status": "covered", + "technique_id": "nakshatra_advanced" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Nakshatra Dasha / 星宿大运推演(Ashtottari + Nakshatra-level Vimshottari)", + "registry_status": "covered", + "technique_id": "nakshatra_dasha" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Narayana Dasha (Rishi Dasha / Padakrama Dasha)", + "registry_status": "covered", + "technique_id": "narayana_dasha" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "64th Navamsa / Chatushashti Navamsa", + "registry_status": "covered", + "technique_id": "navamsa_64th" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Navatara / 九星链", + "registry_status": "covered", + "technique_id": "navatara" + }, + { + "effective_status": "complete", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Neechabhanga / 落陷取消(别名入口)", + "registry_status": "complete", + "technique_id": "neechabhanga" + }, + { + "effective_status": "complete", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Neecha Bhanga Raj Yoga / 落陷解除王者瑜伽", + "registry_status": "complete", + "technique_id": "nicha_bhanga_raj" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Pancha Mahapurusha Yoga / 五王瑜伽", + "registry_status": "covered", + "technique_id": "pancha_mahapurusha" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Pancha Pakshi / 五鸟系统", + "registry_status": "covered", + "technique_id": "pancha_pakshi" + }, + { + "effective_status": "guarded", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Panchavargiya Bala / 五分盘力量", + "registry_status": "guarded", + "technique_id": "panchavargiya_bala" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Pitra Dosha / 父辈煞", + "registry_status": "covered", + "technique_id": "pitra_dosha" + }, + { + "effective_status": "guarded", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "prashna.py", + "registry_status": "guarded", + "technique_id": "prashna" + }, + { + "effective_status": "guarded", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Prashna Integration / 问事占星接入", + "registry_status": "guarded", + "technique_id": "prashna_integration" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Pushkara Navamsa / Pushkara Bhaga", + "registry_status": "covered", + "technique_id": "pushkara" + }, + { + "effective_status": "complete", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Raj Yoga / 王者瑜伽", + "registry_status": "complete", + "technique_id": "raj_yoga" + }, + { + "effective_status": "comparison-only", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Rangacharya / Iranganti Jaimini Variant", + "registry_status": "comparison-only", + "technique_id": "rangacharya_jaimini_variant" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Rashi Tulya Navamsa / 本命对分盘分析", + "registry_status": "covered", + "technique_id": "rashi_tulya_navamsa" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "relationship_analysis.py", + "registry_status": "covered", + "technique_id": "relationship_engine" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "remedies.py", + "registry_status": "covered", + "technique_id": "remedies" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Sade Sati / 土星七年", + "registry_status": "covered", + "technique_id": "sade_sati" + }, + { + "effective_status": "blocked", + "overlay_evidence": "references/oracle/prashna_tajika_saham_gulika_sphuta_oracle_packet_2026_07_19.json", + "overlay_reason": "Saham rules exist, but external numeric oracle worked examples are missing.", + "public_label": "Sahams / 特殊点", + "registry_status": "covered", + "technique_id": "sahams" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Sarpa Drekkana", + "registry_status": "covered", + "technique_id": "sarpa_drekkana" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Shadbala", + "registry_status": "covered", + "technique_id": "shadbala" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Shodasavarga / 十六分盘体系", + "registry_status": "covered", + "technique_id": "shodasavarga" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Solar/Lunar Yogas (Veshi/Voshi/Ubhayachari/Sunapha/Anapha/Durudhura)", + "registry_status": "covered", + "technique_id": "solar_lunar_yogas" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Solar Return / Varshaphala (Tajika)", + "registry_status": "covered", + "technique_id": "solar_return" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Special Lagnas / 特殊上升点(别名入口)", + "registry_status": "covered", + "technique_id": "special_lagnas" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Special Lagnas / HL GL VL PP ViL", + "registry_status": "covered", + "technique_id": "special_lagnas_extended" + }, + { + "effective_status": "blocked", + "overlay_evidence": "references/oracle/prashna_tajika_saham_gulika_sphuta_oracle_packet_2026_07_19.json", + "overlay_reason": "Sphuta sensitive points lack public worked examples and field-level oracle comparison.", + "public_label": "Sphuta / Trisphuta / Catusphuta / Pancasphuta / Prana-Deha-Mrityu", + "registry_status": "covered", + "technique_id": "sphuta_trisphuta_family" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Sudarshana Chakra", + "registry_status": "covered", + "technique_id": "sudarshana_chakra" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "synastry.py", + "registry_status": "covered", + "technique_id": "synastry_16factor" + }, + { + "effective_status": "partial", + "overlay_evidence": "references/oracle/prashna_tajika_saham_gulika_sphuta_oracle_packet_2026_07_19.json", + "overlay_reason": "Tajika/Varshaphala artifacts exist, but complete worked-example closure is partial.", + "public_label": "Tajika Yogas / 年运盘格局", + "registry_status": "covered", + "technique_id": "tajika_yogas" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Tara Bala / Tarabala / 星宿力", + "registry_status": "covered", + "technique_id": "tara_bala" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Thematic Report Orchestrator / 主题化报告编排", + "registry_status": "covered", + "technique_id": "thematic_report_orchestrator" + }, + { + "effective_status": "complete", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Tithi Lord / 月日守护星", + "registry_status": "complete", + "technique_id": "tithi_lord" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "transit_trigger.py", + "registry_status": "covered", + "technique_id": "transit_trigger" + }, + { + "effective_status": "complete", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Trimshamsa D30 / 三十分盘", + "registry_status": "complete", + "technique_id": "trimshamsa_d30" + }, + { + "effective_status": "guarded", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Upagraha / Gulika / Maandi", + "registry_status": "guarded", + "technique_id": "upagraha_gulika_maandi" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Upapada Lagna (UL) / 配偶镜像上升", + "registry_status": "covered", + "technique_id": "upapada_lagna" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Varga Dignity / 分盘尊严等级", + "registry_status": "covered", + "technique_id": "varga_dignity" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Vargottama", + "registry_status": "covered", + "technique_id": "vargottama" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "varshaphala.py", + "registry_status": "covered", + "technique_id": "varshaphala" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Vimshottari Dasha", + "registry_status": "covered", + "technique_id": "vimshottari_dasha" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Vimsopaka Bala / 分盘综合力量", + "registry_status": "covered", + "technique_id": "vimsopaka_bala" + }, + { + "effective_status": "covered", + "overlay_evidence": "", + "overlay_reason": "", + "public_label": "Yogini Dasha / 36年周期", + "registry_status": "covered", + "technique_id": "yogini_dasha" + }, + { + "effective_status": "research_only_blocked", + "overlay_evidence": "references/oracle/conception_chart_adhana_niseka_registry_2026_07_19.json", + "overlay_reason": "Adhana/Niseka screenshot family and partial scaffold exist; safety/source/oracle gates block runtime claims.", + "public_label": "conception_chart", + "registry_status": "missing", + "technique_id": "conception_chart" + }, + { + "effective_status": "reference_only", + "overlay_evidence": "references/oracle/technique_promotion_audit_kp_gochara_muhurta_2026_07_19.json", + "overlay_reason": "Gochara event timing template exists in /tmp; not calibrated runtime.", + "public_label": "gochara_event_timing", + "registry_status": "implicit_or_fragment", + "technique_id": "gochara_event_timing" + }, + { + "effective_status": "partial_registry_only", + "overlay_evidence": "references/oracle/relationship_combinations_rule_family_registry_2026_07_19.json", + "overlay_reason": "Screenshot rule families are indexed but not tested/source-closed runtime.", + "public_label": "relationship_combinations", + "registry_status": "missing", + "technique_id": "relationship_combinations" + } + ], + "truth_source_order": [ + "references/oracle/skill_truth_overlay_2026_07_19.json", + "references/technique_registry.json" + ] +} diff --git a/references/oracle/evidence_packet_index_2026_07_19.json b/references/oracle/evidence_packet_index_2026_07_19.json new file mode 100644 index 00000000..d5869872 --- /dev/null +++ b/references/oracle/evidence_packet_index_2026_07_19.json @@ -0,0 +1,182 @@ +{ + "scope": "evidence_packet_index", + "created_at": "2026-07-19", + "status": "active_index_v1", + "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": 21, + "blocked_or_partial_count": 13, + "human_review_required_count": 1 + }, + "packets": [ + { + "packet_id": "formula_source_kb", + "path": "references/oracle/formula_source_knowledge_base_2026_07_19.json", + "domain": "formula_sources", + "claim_status": "partial", + "consumer_policy": "research_to_commercial_contract_only", + "claim_boundary": "Source/formula/unit registry exists; absolute numeric parity still requires worked examples and oracle comparison." + }, + { + "packet_id": "profile_schema_contract", + "path": "references/oracle/profile_schema_contract_2026_07_19.json", + "domain": "profile_schema", + "claim_status": "ready_contract", + "consumer_policy": "research_to_commercial_contract_only", + "claim_boundary": "Profile schema contract is ready; UI/API adoption must prove gender optional fields do not affect core chart math." + }, + { + "packet_id": "gender_interpretation_contract", + "path": "references/oracle/gender_interpretation_contract_2026_07_19.json", + "domain": "relationship_interpretation", + "claim_status": "ready_contract", + "consumer_policy": "research_to_commercial_contract_only", + "claim_boundary": "Gender affects only optional relationship/birth-context interpretation, not chart calculation." + }, + { + "packet_id": "relationship_gender_role_registry", + "path": "references/relationship_gender_role_technique_registry_2026_07_19.json", + "domain": "relationship_interpretation", + "claim_status": "ready_contract", + "consumer_policy": "research_to_commercial_contract_only", + "claim_boundary": "Technique registry only; no predictive truth upgrade." + }, + { + "packet_id": "day_level_human_annotation_packet", + "path": "references/real_case_calibration/day_level_holdout_v3_human_annotation_packet_2026_07_19.json", + "domain": "timing_holdout", + "claim_status": "blocked", + "consumer_policy": "human_review_required", + "claim_boundary": "Final labels are blank; blind evaluation must not run until independent human review and freeze." + }, + { + "packet_id": "prashna_tajika_oracle_packet", + "path": "references/oracle/prashna_tajika_saham_gulika_sphuta_oracle_packet_2026_07_19.json", + "domain": "horary_annual_sensitive_points", + "claim_status": "blocked", + "consumer_policy": "research_only", + "claim_boundary": "Registry exists; public worked examples and field-level numeric oracle comparison still missing." + }, + { + "packet_id": "vedastro_identity_evidence_audit", + "path": "references/oracle/vedastro_identity_evidence_audit_2026_07_19.json", + "domain": "external_oracle_identity", + "claim_status": "blocked", + "consumer_policy": "research_only", + "claim_boundary": "Local NuGet candidate is pinned; hosted API identity/source commit remains blocked." + }, + { + "packet_id": "xalen_shadbala_av_delta_report", + "path": "references/oracle/xalen_shadbala_av_component_delta_report_2026_07_19.json", + "domain": "shadbala_ashtakavarga", + "claim_status": "partial", + "consumer_policy": "research_only", + "claim_boundary": "Deltas grouped by component; formulas/units/school variants remain open." + }, + { + "packet_id": "three_engine_mismatch_closure_queue", + "path": "references/oracle/three_engine_mismatch_closure_queue_2026_07_19.json", + "domain": "three_engine_parity", + "claim_status": "open_queue", + "consumer_policy": "research_only", + "claim_boundary": "60 tickets remain open; no majority-vote truth." + }, + { + "packet_id": "technique_fragment_inventory", + "path": "references/oracle/technique_fragment_inventory_2026_07_19.json", + "domain": "technique_fragments", + "claim_status": "partial", + "consumer_policy": "research_only", + "claim_boundary": "Inventory prevents missed fragments; files are not capability closure by themselves." + }, + { + "packet_id": "varga_karaka_promotion_audit", + "path": "references/oracle/technique_promotion_audit_varga_karaka_2026_07_19.json", + "domain": "varga_jaimini", + "claim_status": "partial", + "consumer_policy": "research_only", + "claim_boundary": "Runtime coverage exists; entry/display/source/oracle contracts remain." + }, + { + "packet_id": "vimsopaka_avastha_promotion_audit", + "path": "references/oracle/technique_promotion_audit_vimsopaka_avastha_2026_07_19.json", + "domain": "strength_state_layers", + "claim_status": "partial", + "consumer_policy": "research_only", + "claim_boundary": "Runtime usage exists; formula source/oracle/display contracts remain." + }, + { + "packet_id": "kp_gochara_muhurta_promotion_audit", + "path": "references/oracle/technique_promotion_audit_kp_gochara_muhurta_2026_07_19.json", + "domain": "kp_gochara_muhurta_panchanga", + "claim_status": "partial", + "consumer_policy": "research_only", + "claim_boundary": "Panchanga runtime exists; KP/Muhurta/Gochara remain reference-only or need license/source/oracle closure." + }, + { + "packet_id": "claim_audit_runtime_gate", + "path": "scripts/claim_audit_runtime_gate.py", + "domain": "claim_governance", + "claim_status": "ready_contract", + "consumer_policy": "research_to_commercial_contract_only", + "claim_boundary": "Runtime gate can block or degrade high claims from blocked/partial/open evidence packets; production tuning remains false." + }, + { + "packet_id": "screenshot_technique_gap_audit", + "path": "references/oracle/screenshot_technique_gap_audit_2026_07_19.json", + "domain": "source_ingestion", + "claim_status": "partial", + "consumer_policy": "research_only", + "claim_boundary": "Screenshot labels identify missing conception-chart and relationship-combination families, but unreadable images and source packets remain unresolved." + }, + { + "packet_id": "conception_chart_adhana_niseka_registry", + "path": "references/oracle/conception_chart_adhana_niseka_registry_2026_07_19.json", + "domain": "conception_chart", + "claim_status": "blocked", + "consumer_policy": "research_only", + "claim_boundary": "Research-only Adhana/Niseka registry; no medical/fertility/user-facing claim until source, worked example, privacy, and safety gates close." + }, + { + "packet_id": "relationship_combinations_rule_family_registry", + "path": "references/oracle/relationship_combinations_rule_family_registry_2026_07_19.json", + "domain": "relationship_rule_families", + "claim_status": "partial", + "consumer_policy": "research_only", + "claim_boundary": "Relationship/children/hostility combination families are indexed but require source packets, deduplication, tests, and claim gates before runtime use." + }, + { + "packet_id": "skill_truth_overlay", + "path": "references/oracle/skill_truth_overlay_2026_07_19.json", + "domain": "skill_capability_truth", + "claim_status": "partial", + "consumer_policy": "research_to_commercial_contract_only", + "claim_boundary": "Corrects optimistic technique_registry statuses before any skill completeness claim." + }, + { + "packet_id": "rectification_technique_usage_audit", + "path": "references/oracle/rectification_technique_usage_audit_2026_07_19.json", + "domain": "birth_time_rectification", + "claim_status": "partial", + "consumer_policy": "research_only", + "claim_boundary": "Rectification uses candidate sweep, Vimshottari event scoring and varga sensitivity; Narayana/Jaimini/Shadbala/AV/Vimsopaka/Avastha/Gochara layers are not yet integrated." + }, + { + "packet_id": "effective_skill_capability_view", + "path": "references/oracle/effective_skill_capability_view_2026_07_19.json", + "domain": "skill_capability_truth", + "claim_status": "ready_contract", + "consumer_policy": "research_to_commercial_contract_only", + "claim_boundary": "Effective skill view applies the truth overlay before capability claims; raw technique_registry status is not sufficient." + }, + { + "packet_id": "rectification_missing_layer_integration_plan", + "path": "references/oracle/rectification_missing_layer_integration_plan_2026_07_19.json", + "domain": "birth_time_rectification", + "claim_status": "partial", + "consumer_policy": "research_only", + "claim_boundary": "Narayana/Jaimini/Vimsopaka-Avastha/Shadbala-AV/Gochara layers are planned but not yet integrated into rectification scoring." + } + ] +} diff --git a/references/oracle/formula_source_knowledge_base_2026_07_19.json b/references/oracle/formula_source_knowledge_base_2026_07_19.json new file mode 100644 index 00000000..0bcdd374 --- /dev/null +++ b/references/oracle/formula_source_knowledge_base_2026_07_19.json @@ -0,0 +1,180 @@ +{ + "scope": "formula_source_knowledge_base", + "created_at": "2026-07-19", + "status": "formula_source_registry_v1", + "truth_policy": "source_registry_not_absolute_truth", + "production_tuning_allowed": false, + "boundary": "This registry attaches source/formula/unit/oracle boundaries. It does not by itself prove absolute parity or prediction accuracy.", + "source_stack": [ + { + "name": "Brihat Parashara Hora Shastra / classical Shadbala tradition", + "role": "classical_formula_family", + "license_boundary": "public-domain/classical text status depends on edition; use as conceptual formula source, not copied modern translation prose." + }, + { + "name": "Jagannatha Hora / PyJHora", + "url": "https://github.com/naturalstupid/PyJHora", + "role": "oracle/reference implementation", + "license_boundary": "AGPL-3.0; do not copy implementation into commercial runtime." + }, + { + "name": "jyotishganit", + "url": "https://github.com/northtara/jyotishganit", + "role": "permissive external oracle candidate", + "license_boundary": "MIT; may be adapted after field-level contract audit." + }, + { + "name": "VedAstro", + "url": "https://github.com/VedAstro/VedAstro", + "role": "MIT oracle/API candidate", + "license_boundary": "MIT local/NuGet candidate; hosted identity blocked until build/method metadata is pinned." + }, + { + "name": "Xalen", + "role": "Apache-2.0 independent observation oracle", + "license_boundary": "Apache-2.0; currently observation-only, not majority-vote truth." + } + ], + "formulas": [ + { + "formula_id": "shadbala_sthana_bala", + "system": "vedic", + "family": "Shadbala", + "component": "sthana", + "source_evidence": ["classical Shadbala six-force tradition", "PyJHora/JHora VP Jain fixture", "Xalen Shadbala component delta report"], + "formula_summary": "Positional strength: combines dignity/exaltation, divisional dignity, odd/even sign rules, kendra/drekkana and related school-specific subcomponents.", + "unit_contract": "Virupa component; conversion to Rupa must be explicit, usually 60 Virupa = 1 Rupa.", + "known_variants": ["moolatrikona_degree_range_vs_whole_sign", "varga dignity table variant", "subcomponent inclusion variant"], + "implementation_status": "implemented_partial", + "oracle_status": "partial", + "license_boundary": "PyJHora/JHora AGPL evidence is oracle-only; do not copy implementation. VedAstro hosted identity blocked.", + "claim_boundary": "component method variant allowed; absolute Virupa truth blocked until worked example/unit source closes." + }, + { + "formula_id": "shadbala_dig_bala", + "system": "vedic", + "family": "Shadbala", + "component": "dig", + "source_evidence": ["classical directional strength rule", "PyJHora/JHora VP Jain fixture", "Xalen delta report"], + "formula_summary": "Directional strength by angular distance from planet-specific strongest direction/house.", + "unit_contract": "Virupa component; cap/floor and interpolation must be explicit.", + "known_variants": ["house-cusp vs whole-house angular distance", "rounding precision"], + "implementation_status": "implemented_partial", + "oracle_status": "partial", + "license_boundary": "AGPL sources oracle-only; local implementation must remain independently written.", + "claim_boundary": "directional component can be compared only after house/cusp semantics are declared." + }, + { + "formula_id": "shadbala_kala_bala", + "system": "vedic", + "family": "Shadbala", + "component": "kala", + "source_evidence": ["classical temporal strength rules", "sunrise/day-night/hora/month/year lord formulas", "Xalen delta report"], + "formula_summary": "Temporal strength aggregation: day/night, paksha, tribhaga, year/month/day/hora lord and ayana-related subcomponents depending on lineage.", + "unit_contract": "Virupa component; each subcomponent must name local time, sunrise/sunset, ayana and cap rules.", + "known_variants": ["sunrise engine", "local apparent time", "included subcomponents", "hemisphere/ayana convention"], + "implementation_status": "implemented_partial", + "oracle_status": "partial", + "license_boundary": "Use local astronomy implementation; external packages oracle-only unless permissive and audited.", + "claim_boundary": "blocked for absolute parity until each Kala subcomponent has source and worked example." + }, + { + "formula_id": "shadbala_chesta_bala", + "system": "vedic", + "family": "Shadbala", + "component": "chesta", + "source_evidence": ["classical motional strength rules", "mean-motion/Seeghrochcha requirement", "VP Jain fixture variants"], + "formula_summary": "Motional strength from apparent speed/retrogression state; luminary and inner/outer planet policies vary by lineage.", + "unit_contract": "Virupa component; speed basis and retrograde/mean-motion normalization must be explicit.", + "known_variants": ["luminary_chesta_policy", "mean-motion vs apparent-speed", "Seeghrochcha model"], + "implementation_status": "implemented_partial", + "oracle_status": "partial", + "license_boundary": "Cannot copy AGPL PyJHora Chesta implementation; independent local formula required.", + "claim_boundary": "absolute Chesta parity blocked until mean-motion/Seeghrochcha source closes." + }, + { + "formula_id": "shadbala_naisargika_bala", + "system": "vedic", + "family": "Shadbala", + "component": "naisargika", + "source_evidence": ["classical natural strength ordering", "VP Jain fixture", "Xalen delta report"], + "formula_summary": "Natural strength assigned by fixed planetary order/brightness tradition.", + "unit_contract": "Fixed Virupa table for seven visible planets; table source must be named.", + "known_variants": ["fixed table rounding", "planet inclusion set"], + "implementation_status": "implemented_partial", + "oracle_status": "partial", + "license_boundary": "Formula table can be independently sourced; AGPL oracle output not copied as implementation.", + "claim_boundary": "lowest risk component, still requires explicit table source for absolute claim." + }, + { + "formula_id": "shadbala_drik_bala", + "system": "vedic", + "family": "Shadbala", + "component": "drik", + "source_evidence": ["classical aspectual strength rules", "planet aspect model", "Xalen delta report"], + "formula_summary": "Aspectual strength from benefic/malefic aspects on planet; depends on aspect model, orb/interpolation and natural/functional treatment policy.", + "unit_contract": "Virupa component; positive/negative sign and aspect-strength scale must be explicit.", + "known_variants": ["graha drishti model", "orb/interpolation", "benefic/malefic classification"], + "implementation_status": "implemented_partial", + "oracle_status": "partial", + "license_boundary": "Use source-cited formula; AGPL and hosted outputs remain oracle/reference only.", + "claim_boundary": "blocked for absolute parity until aspect strength table/model is pinned." + }, + { + "formula_id": "shadbala_total_rupa_virupa", + "system": "vedic", + "family": "Shadbala", + "component": "total", + "source_evidence": ["component registry", "Xalen delta report"], + "formula_summary": "Total strength derived from six component sums; may expose Virupa and/or Rupa.", + "unit_contract": "Must state whether values are raw Virupa, Rupa, normalized ratio, or required-strength ratio.", + "known_variants": ["absolute total vs required-ratio", "Rupa/Virupa conversion", "component caps"], + "implementation_status": "implemented_partial", + "oracle_status": "partial", + "license_boundary": "Do not normalize to a single truth by majority vote.", + "claim_boundary": "total is blocked until six components close." + }, + { + "formula_id": "ashtakavarga_bav", + "system": "vedic", + "family": "Ashtakavarga", + "component": "BAV", + "source_evidence": ["Ashtakavarga bindu tradition", "Xalen AV table delta report", "local Ashtakoot/AV tests"], + "formula_summary": "Bhinna Ashtakavarga: per-planet 12-sign bindu table from contributor rules.", + "unit_contract": "Integer bindu counts by sign; contributor set, Lagna inclusion, and row/column order required.", + "known_variants": ["contributor table", "Lagna inclusion", "sign indexing", "pre/post shodhana"], + "implementation_status": "implemented_partial", + "oracle_status": "partial", + "license_boundary": "Permissive references may be adapted only after formula audit; AGPL oracle-only.", + "claim_boundary": "table variant allowed; exact truth blocked until worked BAV table source matches." + }, + { + "formula_id": "ashtakavarga_sav", + "system": "vedic", + "family": "Ashtakavarga", + "component": "SAV", + "source_evidence": ["BAV source table", "Xalen SAV delta report"], + "formula_summary": "Sarvashtakavarga: summed bindu table across BAV contributors.", + "unit_contract": "12 integer sign scores; whether reduced/shodhita or raw SAV must be explicit.", + "known_variants": ["raw vs reduced SAV", "included contributors", "rounding not applicable but indexing critical"], + "implementation_status": "implemented_partial", + "oracle_status": "partial", + "license_boundary": "Do not treat web calculator output as formula source.", + "claim_boundary": "SAV mismatch cannot close until BAV contributor and shodhana state close." + }, + { + "formula_id": "ashtakavarga_shodhana_pinda", + "system": "vedic", + "family": "Ashtakavarga", + "component": "shodhana_pinda", + "source_evidence": ["Ashtakavarga shodhana/pinda tradition", "external articles mention reductions and Shodhya Pinda"], + "formula_summary": "Optional reductions and Pinda weighting after raw BAV/SAV depending on school.", + "unit_contract": "Must label raw, reduced, trikona/ekadhipatya shodhana, and shodhya pinda separately.", + "known_variants": ["trikona shodhana", "ekadhipatya shodhana", "planet/sign pinda factors"], + "implementation_status": "blocked", + "oracle_status": "blocked", + "license_boundary": "Needs formula source and worked example before implementation.", + "claim_boundary": "not production claimable." + } + ] +} diff --git a/references/oracle/skill_truth_overlay_2026_07_19.json b/references/oracle/skill_truth_overlay_2026_07_19.json new file mode 100644 index 00000000..4c1137fe --- /dev/null +++ b/references/oracle/skill_truth_overlay_2026_07_19.json @@ -0,0 +1,66 @@ +{ + "scope": "skill_truth_overlay", + "created_at": "2026-07-19", + "status": "truth_overlay_v1", + "source_registry": "references/technique_registry.json", + "production_tuning_allowed": false, + "boundary": "Overlay corrects optimistic technique_registry labels using current runtime audits. It must be applied before claiming skill completeness.", + "overrides": [ + { + "technique_id": "kp_system", + "registry_status": "covered", + "corrected_status": "reference_only", + "evidence": "references/oracle/technique_promotion_audit_kp_gochara_muhurta_2026_07_19.json", + "reason": "KP reference exists in backup/docs; no main runtime oracle/contract." + }, + { + "technique_id": "muhurta", + "registry_status": "covered", + "corrected_status": "reference_only", + "evidence": "references/oracle/technique_promotion_audit_kp_gochara_muhurta_2026_07_19.json", + "reason": "Panchanga runtime exists, but Muhurta/dashaflow is OSS/reference candidate requiring license/source/oracle audit." + }, + { + "technique_id": "gochara_event_timing", + "registry_status": "implicit_or_fragment", + "corrected_status": "reference_only", + "evidence": "references/oracle/technique_promotion_audit_kp_gochara_muhurta_2026_07_19.json", + "reason": "Gochara event timing template exists in /tmp; not calibrated runtime." + }, + { + "technique_id": "sahams", + "registry_status": "covered", + "corrected_status": "blocked", + "evidence": "references/oracle/prashna_tajika_saham_gulika_sphuta_oracle_packet_2026_07_19.json", + "reason": "Saham rules exist, but external numeric oracle worked examples are missing." + }, + { + "technique_id": "sphuta_trisphuta_family", + "registry_status": "covered", + "corrected_status": "blocked", + "evidence": "references/oracle/prashna_tajika_saham_gulika_sphuta_oracle_packet_2026_07_19.json", + "reason": "Sphuta sensitive points lack public worked examples and field-level oracle comparison." + }, + { + "technique_id": "tajika_yogas", + "registry_status": "covered", + "corrected_status": "partial", + "evidence": "references/oracle/prashna_tajika_saham_gulika_sphuta_oracle_packet_2026_07_19.json", + "reason": "Tajika/Varshaphala artifacts exist, but complete worked-example closure is partial." + }, + { + "technique_id": "conception_chart", + "registry_status": "missing", + "corrected_status": "research_only_blocked", + "evidence": "references/oracle/conception_chart_adhana_niseka_registry_2026_07_19.json", + "reason": "Adhana/Niseka screenshot family and partial scaffold exist; safety/source/oracle gates block runtime claims." + }, + { + "technique_id": "relationship_combinations", + "registry_status": "missing", + "corrected_status": "partial_registry_only", + "evidence": "references/oracle/relationship_combinations_rule_family_registry_2026_07_19.json", + "reason": "Screenshot rule families are indexed but not tested/source-closed runtime." + } + ] +} diff --git a/scripts/skill_truth_overlay_view.py b/scripts/skill_truth_overlay_view.py new file mode 100644 index 00000000..54b9401e --- /dev/null +++ b/scripts/skill_truth_overlay_view.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python3 +"""Build effective skill capability view by applying skill_truth_overlay.""" + +from __future__ import annotations + +import argparse +import json +from pathlib import Path + + +def build_effective_registry(registry_path: Path, overlay_path: Path) -> dict: + registry = json.loads(registry_path.read_text(encoding="utf-8")) + overlay = json.loads(overlay_path.read_text(encoding="utf-8")) + overrides = {row["technique_id"]: row for row in overlay["overrides"]} + rows = [] + for technique_id, raw in sorted(registry["techniques"].items()): + override = overrides.get(technique_id) + rows.append( + { + "technique_id": technique_id, + "registry_status": raw.get("status"), + "effective_status": override["corrected_status"] if override else raw.get("status"), + "overlay_evidence": override.get("evidence") if override else "", + "overlay_reason": override.get("reason") if override else "", + "public_label": raw.get("public_label") or raw.get("name") or technique_id, + } + ) + for technique_id, override in sorted(overrides.items()): + if technique_id not in registry["techniques"]: + rows.append( + { + "technique_id": technique_id, + "registry_status": override["registry_status"], + "effective_status": override["corrected_status"], + "overlay_evidence": override["evidence"], + "overlay_reason": override["reason"], + "public_label": technique_id, + } + ) + return { + "scope": "effective_skill_capability_view", + "truth_source_order": [str(overlay_path), str(registry_path)], + "technique_count": len(rows), + "overlay_count": len(overrides), + "techniques": rows, + } + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--registry", type=Path, default=Path("references/technique_registry.json")) + parser.add_argument("--overlay", type=Path, default=Path("references/oracle/skill_truth_overlay_2026_07_19.json")) + parser.add_argument("--output", type=Path) + args = parser.parse_args() + view = build_effective_registry(args.registry, args.overlay) + text = json.dumps(view, ensure_ascii=False, indent=2, sort_keys=True) + "\n" + if args.output: + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(text, encoding="utf-8") + print(text, end="") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/tests/test_skill_truth_overlay_application.py b/tests/test_skill_truth_overlay_application.py new file mode 100644 index 00000000..38d37b49 --- /dev/null +++ b/tests/test_skill_truth_overlay_application.py @@ -0,0 +1,41 @@ +from __future__ import annotations + +from pathlib import Path + +from scripts.skill_truth_overlay_view import build_effective_registry + +ROOT = Path(__file__).resolve().parents[1] + + +def test_skill_truth_overlay_view_applies_corrected_statuses() -> None: + view = build_effective_registry( + ROOT / "references/technique_registry.json", + ROOT / "references/oracle/skill_truth_overlay_2026_07_19.json", + ) + effective = {row["technique_id"]: row["effective_status"] for row in view["techniques"]} + assert effective["kp_system"] == "reference_only" + assert effective["muhurta"] == "reference_only" + assert effective["sahams"] == "blocked" + assert effective["sphuta_trisphuta_family"] == "blocked" + assert effective["tajika_yogas"] == "partial" + + +def test_skill_truth_overlay_view_preserves_registry_status_as_raw_field() -> None: + view = build_effective_registry( + ROOT / "references/technique_registry.json", + ROOT / "references/oracle/skill_truth_overlay_2026_07_19.json", + ) + kp = next(row for row in view["techniques"] if row["technique_id"] == "kp_system") + assert kp["registry_status"] == "covered" + assert kp["effective_status"] == "reference_only" + assert kp["overlay_evidence"] == "references/oracle/technique_promotion_audit_kp_gochara_muhurta_2026_07_19.json" + assert view["truth_source_order"][0].endswith("references/oracle/skill_truth_overlay_2026_07_19.json") + assert view["truth_source_order"][1].endswith("references/technique_registry.json") + + +def test_commercial_agent_must_not_promote_reference_only_or_blocked_techniques() -> None: + source = (ROOT / "frontend" / "src" / "mastra" / "index.ts").read_text(encoding="utf-8") + + assert "effective_skill_capability_view" in source + assert "effective_status, not registry_status" in source + assert "reference_only or blocked techniques" in source