tightening

This commit is contained in:
John Lancaster
2026-06-21 22:12:02 -05:00
parent 3c7f7e61b7
commit 123c491413
29 changed files with 150 additions and 357 deletions
@@ -8,9 +8,7 @@ from pydantic import ValidationError
from personal_mcp.registry.ingest.document import MarkdownDocument
from personal_mcp.registry.ingest.skill import SkillFilesBundle
from personal_mcp.registry.load import _build_skill_record
from personal_mcp.registry.load import load_docs_registry
from personal_mcp.registry.models.registry import SkillSummaryRecord
from tests.registry.models.test_document_validation import as_markdown
from tests.registry.models.test_document_validation import assert_model_is_frozen
from tests.registry.models.test_document_validation import make_markdown_document
from tests.registry.models.test_document_validation import make_skill_frontmatter_payload
@@ -117,36 +115,6 @@ class TestSkillValidationGates:
with pytest.raises(KeyError, match="reference document not found"):
_build_skill_record(bundle=bundle, docs_by_relpath=_docs_index(bundle))
class TestGate4GraphValidation:
"""Gate 4: validate dependency graph coherence across skills."""
def test_unknown_dependency_fails_registry_load(self, tmp_path) -> None:
"""Ensures unresolved depends_on targets abort registry publication."""
skill_dir = tmp_path / "skills" / "alpha"
skill_dir.mkdir(parents=True)
frontmatter = make_skill_frontmatter_payload(skill_id="alpha", depends_on=("beta",))
(skill_dir / "SKILL.md").write_text(as_markdown(frontmatter), encoding="utf-8")
with pytest.raises(ValueError, match="depends_on unknown skill"):
load_docs_registry(package_anchor="personal_mcp", docs_root=str(tmp_path))
def test_resolved_dependency_succeeds_registry_load(self, tmp_path) -> None:
"""Ensures valid dependency graph survives graph validation."""
alpha_dir = tmp_path / "skills" / "alpha"
beta_dir = tmp_path / "skills" / "beta"
alpha_dir.mkdir(parents=True)
beta_dir.mkdir(parents=True)
alpha_frontmatter = make_skill_frontmatter_payload(skill_id="alpha", depends_on=("beta",))
beta_frontmatter = make_skill_frontmatter_payload(skill_id="beta")
(alpha_dir / "SKILL.md").write_text(as_markdown(alpha_frontmatter), encoding="utf-8")
(beta_dir / "SKILL.md").write_text(as_markdown(beta_frontmatter), encoding="utf-8")
registry = load_docs_registry(package_anchor="personal_mcp", docs_root=str(tmp_path))
assert registry.skills_by_id["alpha"].depends_on == ("beta",)
class TestGate5ContractValidation:
"""Gate 5: validate model_dump contract shape for API surfaces."""