Carlos Rocha
Initial release: Palisade Scanner v0.1.0 β€” web content security for AI agents
5f77ac0
Raw
History Blame Contribute Delete
913 Bytes
import logging
from scanner.domain.models import ScanReport
logger = logging.getLogger(__name__)
class DiffDetector:
"""Detects meaningful changes between consecutive scans.
Outputs human-readable diff summaries:
- Score changes (including direction)
- New findings by category
- Resolved findings
- Severity escalations
"""
def detect(self, previous: dict | None, current: ScanReport) -> str | None:
if previous is None:
return None
prev_score = previous.get("last_risk_score", 0)
curr_score = current.risk_score
delta = curr_score - prev_score
if delta == 0:
return None
direction = "increased" if delta > 0 else "decreased"
return (
f"Risk score {direction} from {prev_score} to {curr_score} "
f"({'+' if delta > 0 else ''}{delta}) β€” {current.summary}"
)