scripts-directory-judge
#!/usr/bin/env python3 """Directory Judge - Validates classification against directory conventions."""
from pathlib import Path from typing import Dict from .base import BaseJudge, JudgeDecision
class DirectoryJudge(BaseJudge): """Validates classification against directory placement. Advisory only."""
name = "directory"
has_veto_authority = False
weight = 0.8
DIRECTORY_CONVENTIONS: Dict[str, str] = {
"agents/": "agent",
"commands/": "command",
"skills/": "skill",
"workflows/": "workflow",
"adrs/": "adr",
"guides/": "guide",
"reference/": "reference",
"hooks/": "hook",
"scripts/": "script",
}
def evaluate(self, document, votes, consensus) -> JudgeDecision:
doc_path = str(getattr(document, 'path', '')).lower()
classification = consensus.classification.lower() if consensus.classification else ""
for dir_pattern, expected_type in self.DIRECTORY_CONVENTIONS.items():
if dir_pattern in doc_path:
if classification != expected_type:
return JudgeDecision(
judge=self.name,
approved=False,
reason=f"Directory '{dir_pattern}' suggests '{expected_type}' not '{classification}'",
confidence=0.7,
metadata={'directory': dir_pattern, 'expected': expected_type, 'got': classification}
)
else:
return JudgeDecision(
judge=self.name,
approved=True,
reason=f"Directory placement consistent with {expected_type}",
confidence=0.8,
metadata={'directory': dir_pattern, 'type': expected_type}
)
return JudgeDecision(
judge=self.name,
approved=True,
reason="No strong directory convention applies",
confidence=0.5,
metadata={'no_convention': True}
)