Add second-wave skill registry entries

This commit is contained in:
732642856
2026-06-27 12:37:56 +08:00
parent 4edbc43bf9
commit bc173ba9ee
2 changed files with 132 additions and 0 deletions
+99
View File
@@ -586,6 +586,28 @@
"missing_impact": "Without a first-class 16-varga map, divisional interpretation and traditional weighting logic remain fragmented across isolated chart outputs.",
"note": "Registry entry covers the traditional 16-varga framework and teaching layer; not a claim that every Vimsopaka weighting path is already fully benchmark-closed."
},
"varga_dignity": {
"name": "Varga Dignity / 分盘尊严等级",
"domains": [
"varga",
"strength",
"classification"
],
"status": "covered",
"knowledge_refs": [
"references/shodasavarga-complete-guide.md",
"references/planetary-dignity-complete-reference.md"
],
"commands": [
"full-reading"
],
"output_paths": [
"modules.vimsopaka_bala",
"modules.varga_strength_overview"
],
"audit_label": "Varga Dignity",
"missing_impact": "Without a first-class Varga Dignity entry, Simhasana/Parijata/Shridhama-style honor ladders remain buried inside divisional doctrine and are easy to omit in deep reading."
},
"vimsopaka_bala": {
"name": "Vimsopaka Bala / 分盘综合力量",
"domains": [
@@ -1108,6 +1130,34 @@
"audit_label": "Special Lagnas",
"missing_impact": "Special Lagna timing, status and prosperity sub-angles are thinner without HL/GL/VL/PP/ViL."
},
"special_lagnas": {
"name": "Special Lagnas / 特殊上升点(别名入口)",
"domains": [
"lagna",
"timing",
"wealth",
"status"
],
"status": "covered",
"knowledge_refs": [
"references/open_source_sources/jaimini-tropical/jaimini/core/lagnas.py",
"references/strict-workflow-router.md"
],
"commands": [
"chart",
"full-reading"
],
"output_paths": [
"special_lagnas.HL",
"special_lagnas.GL",
"special_lagnas.VL",
"special_lagnas.PP",
"special_lagnas.ViL"
],
"audit_label": "Special Lagnas",
"missing_impact": "Important prosperity/status/timing sub-ascendants become harder to discover when users ask for special lagnas by the common umbrella term.",
"note": "Alias entry aligned to special_lagnas_extended; not a separate additional calculation family."
},
"tithi_lord": {
"name": "Tithi Lord / 月日守护星",
"domains": [
@@ -1412,6 +1462,55 @@
"missing_impact": "Without a first-class Tara Bala entry, personalized Muhurta filtering and Nakshatra-based caution windows stay hidden behind generic Nakshatra outputs.",
"note": "This is a first-class view over the existing Nakshatra Advanced layer, not a claim that every Navatara branch has already been benchmark-closed."
},
"chandra_bala": {
"name": "Chandra Bala / 月亮力",
"domains": [
"nakshatra",
"muhurta",
"timing",
"strength"
],
"status": "covered",
"knowledge_refs": [
"references/quick-reference-guide.md",
"references/pancha-pakshi-nakshatra-systems.md"
],
"commands": [
"nakshatra-adv",
"full-reading"
],
"output_paths": [
"modules.nakshatra_advanced.chandra_bala",
"modules.nakshatra_advanced.tara_chandra_combined"
],
"audit_label": "Chandra Bala",
"missing_impact": "Without a first-class Chandra Bala entry, Moon-relative suitability and emotional timing filters remain hidden behind a generic advanced Nakshatra surface."
},
"navatara": {
"name": "Navatara / 九星链",
"domains": [
"nakshatra",
"timing",
"personality",
"spiritual"
],
"status": "covered",
"knowledge_refs": [
"references/navatara-kantaka-shani-guide.md",
"references/pancha-pakshi-nakshatra-systems.md"
],
"commands": [
"nakshatra-adv",
"full-reading"
],
"output_paths": [
"modules.nakshatra_advanced.tara_bala",
"modules.nakshatra_advanced"
],
"audit_label": "Navatara",
"missing_impact": "Without a first-class Navatara entry, 27-star three-cycle grouping remains invisible in the skill map even when related Tara layers already exist.",
"note": "Current maturity reflects doctrinal and workflow coverage; treat as covered until a dedicated structured Navatara output surface is frozen."
},
"nakshatra_dasha": {
"name": "Nakshatra Dasha / 星宿大运推演(Ashtottari + Nakshatra-level Vimshottari",
"domains": [
@@ -0,0 +1,33 @@
from __future__ import annotations
import json
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
REGISTRY = ROOT / "references" / "technique_registry.json"
def test_registry_includes_second_wave_first_class_entries() -> None:
techniques = json.loads(REGISTRY.read_text(encoding="utf-8"))["techniques"]
required = {
"chandra_bala": "covered",
"navatara": "covered",
"varga_dignity": "covered",
"special_lagnas": "covered",
}
for key, status in required.items():
assert key in techniques, key
assert techniques[key]["status"] == status
assert techniques[key]["knowledge_refs"]
assert techniques[key]["commands"]
assert techniques[key]["output_paths"]
def test_registry_keeps_special_lagna_aliases_discoverable() -> None:
techniques = json.loads(REGISTRY.read_text(encoding="utf-8"))["techniques"]
assert "special_lagnas_extended" in techniques
assert "special_lagnas" in techniques
assert techniques["special_lagnas"]["status"] == techniques["special_lagnas_extended"]["status"]