feat: sync compatibility skill readiness dashboard
This commit is contained in:
@@ -0,0 +1,159 @@
|
||||
{
|
||||
"scope": "compatibility_skill_readiness_dashboard",
|
||||
"created_at": "2026-07-20",
|
||||
"status": "dashboard_v1",
|
||||
"claim_status": "partial",
|
||||
"production_tuning_allowed": false,
|
||||
"truth_matrix_allowed": false,
|
||||
"summary": {
|
||||
"layer_count": 9,
|
||||
"runtime_available_count": 5,
|
||||
"blocked_or_registry_only_count": 4,
|
||||
"oracle_ready_count": 0
|
||||
},
|
||||
"skill_use_policy": {
|
||||
"allowed": "Expose basic compatibility factors and relationship context with explicit low/partial evidence boundaries.",
|
||||
"forbidden": "Do not present any layer as deterministic marriage success, divorce prediction, exact relationship timing, or complete synastry truth."
|
||||
},
|
||||
"layers": [
|
||||
{
|
||||
"layer_id": "ashtakoota_guna_milan",
|
||||
"name": "Ashtakoota / Guna Milan",
|
||||
"runtime_status": "available",
|
||||
"runtime_path": "scripts/ashtakoot.py",
|
||||
"runtime_path_exists": true,
|
||||
"skill_status": "callable_basic",
|
||||
"api_ui_status": "surface_audit_needed",
|
||||
"external_oracle_status": "partial",
|
||||
"commercial_sync_status": "basic_safe_with_boundary",
|
||||
"evidence_paths": [
|
||||
"scripts/ashtakoot.py",
|
||||
"references/oracle/ashtakoot_oracle_cases.json",
|
||||
"scripts/synastry.py"
|
||||
],
|
||||
"claim_boundary": "36-point compatibility can be exposed as one factor only; not deterministic marriage outcome."
|
||||
},
|
||||
{
|
||||
"layer_id": "mangal_dosha",
|
||||
"name": "Mangal / Kuja Dosha matching",
|
||||
"runtime_status": "available",
|
||||
"runtime_path": "scripts/ashtakoot.py",
|
||||
"runtime_path_exists": true,
|
||||
"skill_status": "callable_basic",
|
||||
"api_ui_status": "surface_audit_needed",
|
||||
"external_oracle_status": "partial",
|
||||
"commercial_sync_status": "basic_safe_with_boundary",
|
||||
"evidence_paths": [
|
||||
"scripts/ashtakoot.py"
|
||||
],
|
||||
"claim_boundary": "Use as risk flag and cancellation check; never as standalone rejection verdict."
|
||||
},
|
||||
{
|
||||
"layer_id": "d9_navamsa_relationship",
|
||||
"name": "D9 Navamsa relationship layer",
|
||||
"runtime_status": "available",
|
||||
"runtime_path": "scripts/relationship_analysis.py",
|
||||
"runtime_path_exists": true,
|
||||
"skill_status": "callable_context",
|
||||
"api_ui_status": "surface_audit_needed",
|
||||
"external_oracle_status": "partial",
|
||||
"commercial_sync_status": "safe_as_context",
|
||||
"evidence_paths": [
|
||||
"scripts/relationship_analysis.py",
|
||||
"references/navamsa-marriage-deep-analysis.md"
|
||||
],
|
||||
"claim_boundary": "D9 can support relationship analysis; timing/outcome claims still require Dasha, transits, and external calibration."
|
||||
},
|
||||
{
|
||||
"layer_id": "darakaraka",
|
||||
"name": "Darakaraka spouse significator",
|
||||
"runtime_status": "available",
|
||||
"runtime_path": "scripts/darakaraka_reader.py",
|
||||
"runtime_path_exists": true,
|
||||
"skill_status": "callable_context",
|
||||
"api_ui_status": "surface_audit_needed",
|
||||
"external_oracle_status": "source_reference_only",
|
||||
"commercial_sync_status": "safe_as_context",
|
||||
"evidence_paths": [
|
||||
"scripts/darakaraka_reader.py",
|
||||
"references/darakaraka-complete-guide.md"
|
||||
],
|
||||
"claim_boundary": "May describe spouse/relationship themes; not a compatibility score or event proof."
|
||||
},
|
||||
{
|
||||
"layer_id": "upapada_lagna",
|
||||
"name": "Upapada Lagna marriage image",
|
||||
"runtime_status": "available_as_chart_field",
|
||||
"runtime_path": "jyotish-app/analysis-deep.js",
|
||||
"runtime_path_exists": true,
|
||||
"skill_status": "callable_context",
|
||||
"api_ui_status": "surface_audit_needed",
|
||||
"external_oracle_status": "source_reference_only",
|
||||
"commercial_sync_status": "safe_as_context",
|
||||
"evidence_paths": [
|
||||
"jyotish-app/analysis-deep.js",
|
||||
"references/data-bridge-mapping.md",
|
||||
"references/jaimini-complete-system.md"
|
||||
],
|
||||
"claim_boundary": "UL is a relationship image layer; must not replace full chart, D9, Dasha, or event evidence."
|
||||
},
|
||||
{
|
||||
"layer_id": "relationship_combinations",
|
||||
"name": "Relationship rule-family combinations",
|
||||
"runtime_status": "registry_only",
|
||||
"runtime_path": null,
|
||||
"runtime_path_exists": false,
|
||||
"skill_status": "contract_only",
|
||||
"api_ui_status": "no_runtime_surface",
|
||||
"external_oracle_status": "missing",
|
||||
"commercial_sync_status": "research_only",
|
||||
"evidence_paths": [
|
||||
"references/oracle/relationship_combinations_rule_family_registry_2026_07_19.json"
|
||||
],
|
||||
"claim_boundary": "Indexed rule families still need source packets, deduplication, tests, and claim gates before runtime use."
|
||||
},
|
||||
{
|
||||
"layer_id": "relationship_ashtakavarga_overlay",
|
||||
"name": "Relationship Ashtakavarga overlay",
|
||||
"runtime_status": "missing_runtime",
|
||||
"runtime_path": null,
|
||||
"runtime_path_exists": false,
|
||||
"skill_status": "not_invoked",
|
||||
"api_ui_status": "no_runtime_surface",
|
||||
"external_oracle_status": "missing",
|
||||
"commercial_sync_status": "blocked_until_oracle",
|
||||
"evidence_paths": [
|
||||
"references/oracle/ashtakavarga_advanced_usage_gap_registry_2026_07_19.json"
|
||||
],
|
||||
"claim_boundary": "Do not expose relationship AV overlay until rules, examples, and field-level oracle packets exist."
|
||||
},
|
||||
{
|
||||
"layer_id": "planet_lagna_kuta",
|
||||
"name": "Planet/Lagna Kuta variants",
|
||||
"runtime_status": "registry_only",
|
||||
"runtime_path": null,
|
||||
"runtime_path_exists": false,
|
||||
"skill_status": "not_invoked",
|
||||
"api_ui_status": "no_runtime_surface",
|
||||
"external_oracle_status": "missing",
|
||||
"commercial_sync_status": "blocked_until_oracle",
|
||||
"evidence_paths": [
|
||||
"references/oracle/compatibility_full_system_gap_registry_2026_07_19.json"
|
||||
],
|
||||
"claim_boundary": "Do not claim full top-tier compatibility until Planet/Lagna Kuta variants and worked examples are validated."
|
||||
},
|
||||
{
|
||||
"layer_id": "western_composite_davidson_boundary",
|
||||
"name": "Western composite / Davidson boundary",
|
||||
"runtime_status": "out_of_scope",
|
||||
"runtime_path": null,
|
||||
"runtime_path_exists": false,
|
||||
"skill_status": "not_invoked",
|
||||
"api_ui_status": "no_vedic_surface",
|
||||
"external_oracle_status": "not_applicable_vedic_core",
|
||||
"commercial_sync_status": "out_of_scope_for_vedic_core",
|
||||
"evidence_paths": [],
|
||||
"claim_boundary": "Keep out of Vedic commercial runtime unless explicitly scoped as cross-system research."
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -633,14 +633,22 @@
|
||||
"claim_status": "open_queue",
|
||||
"consumer_policy": "research_to_commercial_contract_only",
|
||||
"claim_boundary": "Progress dashboard for five blocked-but-code-progressable domains; does not unblock production-ready claims."
|
||||
},
|
||||
{
|
||||
"packet_id": "compatibility_skill_readiness_dashboard",
|
||||
"path": "references/oracle/compatibility_skill_readiness_dashboard_2026_07_20.json",
|
||||
"domain": "compatibility",
|
||||
"claim_status": "partial",
|
||||
"consumer_policy": "research_to_commercial_contract_only",
|
||||
"claim_boundary": "Basic compatibility layers are callable with boundaries; full synastry, relationship AV overlays, Planet/Lagna Kuta, and deterministic relationship timing remain blocked until oracle packets close."
|
||||
}
|
||||
],
|
||||
"production_tuning_allowed": false,
|
||||
"scope": "evidence_packet_index",
|
||||
"status": "active_index_v1",
|
||||
"summary": {
|
||||
"packet_count": 79,
|
||||
"blocked_or_partial_count": 52,
|
||||
"packet_count": 80,
|
||||
"blocked_or_partial_count": 53,
|
||||
"human_review_required_count": 2
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,188 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Build a bounded compatibility/synastry skill readiness dashboard.
|
||||
|
||||
This is governance glue, not a truth engine. It records which relationship
|
||||
layers are callable, which are registry-only, and which must stay blocked.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
OUT = ROOT / "references" / "oracle" / "compatibility_skill_readiness_dashboard_2026_07_20.json"
|
||||
|
||||
|
||||
def exists(path: str) -> bool:
|
||||
return (ROOT / path).exists()
|
||||
|
||||
|
||||
def layer(
|
||||
layer_id: str,
|
||||
name: str,
|
||||
runtime_path: str | None,
|
||||
runtime_status: str,
|
||||
skill_status: str,
|
||||
api_ui_status: str,
|
||||
external_oracle_status: str,
|
||||
commercial_sync_status: str,
|
||||
claim_boundary: str,
|
||||
evidence: list[str] | None = None,
|
||||
) -> dict:
|
||||
paths = list(evidence or [])
|
||||
if runtime_path:
|
||||
paths.insert(0, runtime_path)
|
||||
return {
|
||||
"layer_id": layer_id,
|
||||
"name": name,
|
||||
"runtime_status": runtime_status,
|
||||
"runtime_path": runtime_path,
|
||||
"runtime_path_exists": exists(runtime_path) if runtime_path else False,
|
||||
"skill_status": skill_status,
|
||||
"api_ui_status": api_ui_status,
|
||||
"external_oracle_status": external_oracle_status,
|
||||
"commercial_sync_status": commercial_sync_status,
|
||||
"evidence_paths": paths,
|
||||
"claim_boundary": claim_boundary,
|
||||
}
|
||||
|
||||
|
||||
def build() -> dict:
|
||||
layers = [
|
||||
layer(
|
||||
"ashtakoota_guna_milan",
|
||||
"Ashtakoota / Guna Milan",
|
||||
"scripts/ashtakoot.py",
|
||||
"available",
|
||||
"callable_basic",
|
||||
"surface_audit_needed",
|
||||
"partial",
|
||||
"basic_safe_with_boundary",
|
||||
"36-point compatibility can be exposed as one factor only; not deterministic marriage outcome.",
|
||||
["references/oracle/ashtakoot_oracle_cases.json", "scripts/synastry.py"],
|
||||
),
|
||||
layer(
|
||||
"mangal_dosha",
|
||||
"Mangal / Kuja Dosha matching",
|
||||
"scripts/ashtakoot.py",
|
||||
"available",
|
||||
"callable_basic",
|
||||
"surface_audit_needed",
|
||||
"partial",
|
||||
"basic_safe_with_boundary",
|
||||
"Use as risk flag and cancellation check; never as standalone rejection verdict.",
|
||||
),
|
||||
layer(
|
||||
"d9_navamsa_relationship",
|
||||
"D9 Navamsa relationship layer",
|
||||
"scripts/relationship_analysis.py",
|
||||
"available",
|
||||
"callable_context",
|
||||
"surface_audit_needed",
|
||||
"partial",
|
||||
"safe_as_context",
|
||||
"D9 can support relationship analysis; timing/outcome claims still require Dasha, transits, and external calibration.",
|
||||
["references/navamsa-marriage-deep-analysis.md"],
|
||||
),
|
||||
layer(
|
||||
"darakaraka",
|
||||
"Darakaraka spouse significator",
|
||||
"scripts/darakaraka_reader.py",
|
||||
"available",
|
||||
"callable_context",
|
||||
"surface_audit_needed",
|
||||
"source_reference_only",
|
||||
"safe_as_context",
|
||||
"May describe spouse/relationship themes; not a compatibility score or event proof.",
|
||||
["references/darakaraka-complete-guide.md"],
|
||||
),
|
||||
layer(
|
||||
"upapada_lagna",
|
||||
"Upapada Lagna marriage image",
|
||||
"jyotish-app/analysis-deep.js",
|
||||
"available_as_chart_field",
|
||||
"callable_context",
|
||||
"surface_audit_needed",
|
||||
"source_reference_only",
|
||||
"safe_as_context",
|
||||
"UL is a relationship image layer; must not replace full chart, D9, Dasha, or event evidence.",
|
||||
["references/data-bridge-mapping.md", "references/jaimini-complete-system.md"],
|
||||
),
|
||||
layer(
|
||||
"relationship_combinations",
|
||||
"Relationship rule-family combinations",
|
||||
None,
|
||||
"registry_only",
|
||||
"contract_only",
|
||||
"no_runtime_surface",
|
||||
"missing",
|
||||
"research_only",
|
||||
"Indexed rule families still need source packets, deduplication, tests, and claim gates before runtime use.",
|
||||
["references/oracle/relationship_combinations_rule_family_registry_2026_07_19.json"],
|
||||
),
|
||||
layer(
|
||||
"relationship_ashtakavarga_overlay",
|
||||
"Relationship Ashtakavarga overlay",
|
||||
None,
|
||||
"missing_runtime",
|
||||
"not_invoked",
|
||||
"no_runtime_surface",
|
||||
"missing",
|
||||
"blocked_until_oracle",
|
||||
"Do not expose relationship AV overlay until rules, examples, and field-level oracle packets exist.",
|
||||
["references/oracle/ashtakavarga_advanced_usage_gap_registry_2026_07_19.json"],
|
||||
),
|
||||
layer(
|
||||
"planet_lagna_kuta",
|
||||
"Planet/Lagna Kuta variants",
|
||||
None,
|
||||
"registry_only",
|
||||
"not_invoked",
|
||||
"no_runtime_surface",
|
||||
"missing",
|
||||
"blocked_until_oracle",
|
||||
"Do not claim full top-tier compatibility until Planet/Lagna Kuta variants and worked examples are validated.",
|
||||
["references/oracle/compatibility_full_system_gap_registry_2026_07_19.json"],
|
||||
),
|
||||
layer(
|
||||
"western_composite_davidson_boundary",
|
||||
"Western composite / Davidson boundary",
|
||||
None,
|
||||
"out_of_scope",
|
||||
"not_invoked",
|
||||
"no_vedic_surface",
|
||||
"not_applicable_vedic_core",
|
||||
"out_of_scope_for_vedic_core",
|
||||
"Keep out of Vedic commercial runtime unless explicitly scoped as cross-system research.",
|
||||
),
|
||||
]
|
||||
return {
|
||||
"scope": "compatibility_skill_readiness_dashboard",
|
||||
"created_at": "2026-07-20",
|
||||
"status": "dashboard_v1",
|
||||
"claim_status": "partial",
|
||||
"production_tuning_allowed": False,
|
||||
"truth_matrix_allowed": False,
|
||||
"summary": {
|
||||
"layer_count": len(layers),
|
||||
"runtime_available_count": sum(1 for x in layers if x["runtime_status"] in {"available", "available_as_chart_field"}),
|
||||
"blocked_or_registry_only_count": sum(1 for x in layers if x["commercial_sync_status"] in {"research_only", "blocked_until_oracle", "out_of_scope_for_vedic_core"}),
|
||||
"oracle_ready_count": 0,
|
||||
},
|
||||
"skill_use_policy": {
|
||||
"allowed": "Expose basic compatibility factors and relationship context with explicit low/partial evidence boundaries.",
|
||||
"forbidden": "Do not present any layer as deterministic marriage success, divorce prediction, exact relationship timing, or complete synastry truth.",
|
||||
},
|
||||
"layers": layers,
|
||||
}
|
||||
|
||||
|
||||
def main() -> None:
|
||||
OUT.write_text(json.dumps(build(), ensure_ascii=False, indent=2) + "\n")
|
||||
print(OUT)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,55 @@
|
||||
import json
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
ARTIFACT = ROOT / "references" / "oracle" / "compatibility_skill_readiness_dashboard_2026_07_20.json"
|
||||
INDEX = ROOT / "references" / "oracle" / "evidence_packet_index_2026_07_19.json"
|
||||
|
||||
|
||||
def test_compatibility_skill_dashboard_generator_creates_bounded_layers():
|
||||
subprocess.run(
|
||||
["python3", "scripts/compatibility_skill_readiness_dashboard.py"],
|
||||
cwd=ROOT,
|
||||
check=True,
|
||||
)
|
||||
|
||||
data = json.loads(ARTIFACT.read_text())
|
||||
assert data["scope"] == "compatibility_skill_readiness_dashboard"
|
||||
assert data["claim_status"] == "partial"
|
||||
assert data["production_tuning_allowed"] is False
|
||||
assert data["truth_matrix_allowed"] is False
|
||||
|
||||
layers = {layer["layer_id"]: layer for layer in data["layers"]}
|
||||
for layer_id in [
|
||||
"ashtakoota_guna_milan",
|
||||
"mangal_dosha",
|
||||
"d9_navamsa_relationship",
|
||||
"darakaraka",
|
||||
"upapada_lagna",
|
||||
"relationship_combinations",
|
||||
"relationship_ashtakavarga_overlay",
|
||||
"planet_lagna_kuta",
|
||||
"western_composite_davidson_boundary",
|
||||
]:
|
||||
assert layer_id in layers
|
||||
|
||||
assert layers["ashtakoota_guna_milan"]["runtime_status"] == "available"
|
||||
assert layers["ashtakoota_guna_milan"]["external_oracle_status"] == "partial"
|
||||
assert layers["relationship_ashtakavarga_overlay"]["runtime_status"] in {
|
||||
"missing_runtime",
|
||||
"registry_only",
|
||||
}
|
||||
assert layers["western_composite_davidson_boundary"]["commercial_sync_status"] == "out_of_scope_for_vedic_core"
|
||||
assert all("claim_boundary" in layer and layer["claim_boundary"] for layer in data["layers"])
|
||||
|
||||
|
||||
def test_compatibility_dashboard_is_indexed_as_partial_contract_only_packet():
|
||||
index = json.loads(INDEX.read_text())
|
||||
packets = {packet["packet_id"]: packet for packet in index["packets"]}
|
||||
packet = packets["compatibility_skill_readiness_dashboard"]
|
||||
assert packet["path"] == "references/oracle/compatibility_skill_readiness_dashboard_2026_07_20.json"
|
||||
assert packet["domain"] == "compatibility"
|
||||
assert packet["claim_status"] == "partial"
|
||||
assert packet["consumer_policy"] == "research_to_commercial_contract_only"
|
||||
Reference in New Issue
Block a user