from __future__ import annotations import re import subprocess import sys from pathlib import Path import pytest yaml = pytest.importorskip("yaml") ROOT = Path(__file__).resolve().parents[1] SCRIPT = ROOT / "scripts" / "check_layer_conformance.py" DECL = ROOT / "layer.yaml" INTENT = ROOT / "INTENT.md" def _fold(value: object) -> str: return str(value).strip().encode("ascii", "ignore").decode().lower() def _intent_frontmatter() -> dict: match = re.match(r"^---\n(.*?)\n---\n", INTENT.read_text(), re.DOTALL) assert match return yaml.safe_load(match.group(1)) def _run(*args: str) -> subprocess.CompletedProcess[str]: return subprocess.run( [sys.executable, str(SCRIPT), *args], capture_output=True, text=True, ) def test_declaration_exists_and_declares_engine_pip(): assert DECL.exists() data = yaml.safe_load(DECL.read_text()) assert data["repository"] == "maturity-engine" assert _fold(data["layer"]) == "engine" assert _fold(data["role"]) == "pip" assert data["framework"] == "netkingdom-security-layer-model" assert "pep_stance" not in data or not data.get("pep_stance") def test_intent_md_carries_the_governing_layer_key(): """GH-DEC-2026-017 §1: the INTENT.md frontmatter key is the declaration.""" assert _fold(_intent_frontmatter()["layer"]) == "engine" def test_sidecar_is_marked_derived_and_names_its_source(): data = yaml.safe_load(DECL.read_text()) assert data["derived"] is True assert data["derived_from"] == "INTENT.md" def test_frontmatter_agrees_with_layer_yaml_once_case_is_folded(): """A11 agreement, A9 fold. Deliberately a fold, not an equality: an equality would silently demand the re-spelling the ruling declined.""" meta = _intent_frontmatter() data = yaml.safe_load(DECL.read_text()) assert _fold(meta["layer"]) == _fold(data["layer"]) assert _fold(meta["role"]) == _fold(data["role"]) def test_both_layer_values_are_in_the_closed_vocabulary(): vocabulary = {"taxonomy", "tooling", "engine", "staff"} assert _fold(_intent_frontmatter()["layer"]) in vocabulary assert _fold(yaml.safe_load(DECL.read_text())["layer"]) in vocabulary def test_no_declaration_carries_a_standard_version(): """GH-DEC-2026-017 §5 / A12.""" assert "standard_version" not in yaml.safe_load(DECL.read_text()) assert "standard_version" not in _intent_frontmatter() def test_no_tooling_contacts_or_pep(): data = yaml.safe_load(DECL.read_text()) assert data["tooling_contacts"] == [] for entries in data["declared_shapes"].values(): assert entries == [] clients = {item["id"] for item in data["non_tooling_clients"]} assert "state-hub-work-records" in clients assert "sqlite-own-store" in clients def test_catalog_entry_matches_section_4(): data = yaml.safe_load(DECL.read_text()) owns = " ".join(data["catalog_entry"]["owns"]) assert "graded progression" in owns assert "gap register" in owns assert "capability readiness" in owns def test_checker_passes_on_the_real_tree(): result = _run() assert result.returncode == 0, result.stderr def test_checker_catches_an_openbao_client(tmp_path, monkeypatch): import importlib.util spec = importlib.util.spec_from_file_location("check_layer_conformance", SCRIPT) module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) fake_src = tmp_path / "src" / "maturity_engine" fake_src.mkdir(parents=True) (fake_src / "oops.py").write_text("import hvac\n") monkeypatch.setattr(module, "SRC", fake_src) hits = module.scan() assert hits assert hits[0][1] == "hvac"