Skip to content

Hardening Advisor

hardening_advisor

Hardening Advisor — analyze safety configuration and recommend improvements.

Inspects the current safety setup (policies, controls, thresholds) and produces a prioritized list of hardening recommendations with effort estimates and risk-reduction scores.

Usage::

python -m replication harden
python -m replication harden --format json
python -m replication harden --category access
python -m replication harden --min-impact medium
python -m replication harden --output hardening-report.html

Recommendation dataclass

A single hardening recommendation.

Source code in src/replication/hardening_advisor.py
@dataclass
class Recommendation:
    """A single hardening recommendation."""
    id: str
    title: str
    description: str
    category: Category
    impact: Impact
    effort: Effort
    current_state: str
    recommended_state: str
    rationale: str
    references: List[str] = field(default_factory=list)

    def to_dict(self) -> dict:
        d = asdict(self)
        d["category"] = self.category.value
        d["impact"] = self.impact.value
        d["effort"] = self.effort.value
        return d

HardeningReport dataclass

Full hardening assessment report.

Source code in src/replication/hardening_advisor.py
@dataclass
class HardeningReport:
    """Full hardening assessment report."""
    recommendations: List[Recommendation]
    overall_score: float  # 0-100, higher = more hardened
    category_scores: Dict[str, float]
    summary: str

    def to_dict(self) -> dict:
        return {
            "overall_score": round(self.overall_score, 1),
            "summary": self.summary,
            "category_scores": {k: round(v, 1) for k, v in self.category_scores.items()},
            "recommendation_count": len(self.recommendations),
            "by_impact": {
                impact.value: sum(1 for r in self.recommendations if r.impact == impact)
                for impact in Impact
            },
            "recommendations": [r.to_dict() for r in self.recommendations],
        }