from pathlib import Path from railiance_fabric.financial_baseline import load_financial_baseline from railiance_fabric.loader import load_yaml from railiance_fabric.schema_validation import draft202012_validator MANIFEST_PATH = Path("fabric/discovery/railiance-accountability-roots.yaml") EXAMPLE_PATH = Path("examples/discovery/accountability-root-manifest.yaml") SCHEMA_PATH = Path("schemas/accountability-root-manifest.schema.yaml") def test_accountability_root_manifests_match_schema() -> None: validator = draft202012_validator(SCHEMA_PATH) for path in (MANIFEST_PATH, EXAMPLE_PATH): manifest = load_yaml(path) assert list(validator.iter_errors(manifest)) == [] def test_railiance_manifest_matches_financial_baseline() -> None: manifest = load_yaml(MANIFEST_PATH) baseline = load_financial_baseline() assert manifest["netkingdom"]["id"] == baseline["netkingdom"]["id"] assert manifest["netkingdom"]["king_actor_id"] == baseline["netkingdom"]["king_actor_id"] baseline_actor_ids = {actor["id"] for actor in baseline["actors"]} manifest_actor_ids = {actor["id"] for actor in manifest["actors"]} assert baseline_actor_ids <= manifest_actor_ids primary_fabric = next(fabric for fabric in manifest["fabrics"] if fabric["id"] == "fabric.railiance.primary") assert primary_fabric["kind"] == "Fabric" assert primary_fabric["status"] == "active" assert primary_fabric["boundary"]["criterion"] == "financial_and_operational_accountability" def test_railiance_manifest_covers_required_root_kinds() -> None: manifest = load_yaml(MANIFEST_PATH) root_types = {root["type"] for root in manifest["discovery_roots"]} assert { "state_hub_repo_inventory", "gitea_organization", "registry_manifest", "host_path", "repository_checkout", "deployment_automation", "backup_recovery", "secret_root", } <= root_types assert all(root["fabric_id"] == "fabric.railiance.primary" for root in manifest["discovery_roots"]) assert all(root["source"]["safe_discovery"] for root in manifest["discovery_roots"]) def test_example_manifest_can_add_tenant_subfabric() -> None: manifest = load_yaml(EXAMPLE_PATH) subfabrics = [fabric for fabric in manifest["fabrics"] if fabric["kind"] == "Subfabric"] assert len(subfabrics) == 1 assert subfabrics[0]["parent_fabric_id"] == "fabric.example.primary" assert subfabrics[0]["tenant_actor_id"] == "actor.example.tenant" assert any(root.get("subfabric_id") == "subfabric.example.tenant" for root in manifest["discovery_roots"])