from pathlib import Path
ROOT=Path(__file__).resolve().parents[1]
def read(x): return (ROOT/x).read_text(encoding="utf-8")
def test_v016_router_ui_version():
 m=read("app/main.py"); a=read("app/api/v016.py")
 assert "v016_router" in m  and "/semantic-execution" in m
 for r in ["/query/plan","/query/execute","/executions","/cost-policies","/cache","/materializations"]: assert r in a
 assert (ROOT/"app/static/semantic-execution.html").exists()
def test_v016_models_migration():
 e=read("app/models/entities.py"); m=read("migrations/016_federated_semantic_execution.sql")
 for n in ["SemanticExecution","SemanticQueryCache","SemanticCostPolicy","SemanticMaterialization"]: assert f"class {n}" in e
 for t in ["semantic_executions_v016","semantic_query_cache_v016","semantic_cost_policies_v016","semantic_materializations_v016"]: assert t in m
def test_v016_security_execution():
 s=read("app/services/semantic_execution.py")
 for token in ["SAFE","quote_ident","enforce_policy","decrypt_secret","text(sql),params","cache_key"]: assert token in s
def test_v016_docs():
 for f in ["USER_GUIDE_V016.md","ADMIN_GUIDE_V016.md","HOMOLOGATION_V016.md"]: assert (ROOT/f).exists()
