from info_tech_canon.service import ( artifact_graph, generate_agent_briefs, generate_indexes, generate_tree, inspect_canon, list_models, list_standards, validate_canon, ) from info_tech_canon.service import DEFAULT_INFOSPACE_ROOT import shutil def test_inspect_canon_counts_artifact_kinds() -> None: payload = inspect_canon() assert payload["ok"] is True assert payload["infospace"]["slug"] == "canon" assert payload["infospace"]["artifact_count"] == 15 assert payload["infospace"]["kinds"] == { "kernel": 2, "model": 11, "standard": 2, } def test_model_and_standard_lists_are_filtered() -> None: assert list_models()["count"] == 11 assert list_standards()["count"] == 2 def test_validate_canon_passes_scaffold() -> None: payload = validate_canon() assert payload["ok"] is True assert payload["errors"] == [] assert "warnings" in payload assert payload["details"]["artifact_count"] == 15 def test_graph_exports_relationship_summary() -> None: payload = artifact_graph() assert payload["ok"] is True assert payload["graph"]["node_count"] == 15 assert payload["graph"]["edge_count"] > 15 def test_generators_write_expected_assets(tmp_path) -> None: root = tmp_path / "infospace" shutil.copytree(DEFAULT_INFOSPACE_ROOT, root) index_payload = generate_indexes(root) tree_payload = generate_tree(root) brief_payload = generate_agent_briefs(root) assert index_payload["ok"] is True assert tree_payload["ok"] is True assert brief_payload["ok"] is True assert (root / "indexes" / "concept-ownership.yaml").is_file() assert (root / "views" / "by-standard.md").read_text( encoding="utf-8" ).startswith("