Implement scope-derived candidate review infrastructure

This commit is contained in:
2026-05-16 00:26:29 +02:00
parent f4d782c997
commit ba2228e889
14 changed files with 1740 additions and 39 deletions

View File

@@ -498,6 +498,49 @@ def test_dependency_graph_deduplicates_document_fact_nodes(tmp_path):
assert fact_nodes[0]["label"] == "README.md (documentation)"
def test_dependency_graph_renders_candidate_fallback_when_approved_hierarchy_missing(tmp_path):
service = make_service(tmp_path)
source = tmp_path / "scope-candidate"
source.mkdir()
(source / "SCOPE.md").write_text(
"# SCOPE\n\n"
"## One-liner\n"
"S5 Workloads and Experience layer.\n\n"
"## Provided Capabilities\n\n"
"```capability\n"
"type: infrastructure\n"
"title: Application workload deployment\n"
"description: Deploy applications as Helm releases.\n"
"keywords: [helm]\n"
"```\n",
encoding="utf-8",
)
repository = service.register_repository(name="Scope Candidate", url=str(source))
service.analyze_repository(
repository.id,
source_path=str(source),
use_llm_assistance=False,
)
payload = service.dependency_graph_elements(repository.id, use_latest_profile=False)
nodes = [
element["data"]
for element in payload["elements"]
if "source" not in element["data"]
]
edges = [
element["data"]
for element in payload["elements"]
if "source" in element["data"]
]
assert payload["metrics"]["node_count"] > 0
assert any(node["reviewState"] == "candidate" for node in nodes)
assert any(node["reviewState"] == "draft" for node in nodes)
assert any(edge["dependencyType"] == "draft-realizes" for edge in edges)
assert any(edge["dependencyType"] == "draft-supports" for edge in edges)
def test_manual_registry_updates_and_deletes_approved_entries(tmp_path):
service = make_service(tmp_path)
repository = service.register_repository(