Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions src/agentready/assessors/code_quality.py
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ def attribute(self) -> Attribute:
tier=self.tier,
description="Cyclomatic complexity thresholds enforced",
criteria="Average complexity <10, no functions >15",
default_weight=0.03,
default_weight=0.02,
)

def is_applicable(self, repository: Repository) -> bool:
Expand Down Expand Up @@ -423,7 +423,7 @@ def _create_remediation(self) -> Remediation:
class StructuredLoggingAssessor(BaseAssessor):
"""Assesses use of structured logging libraries.

Tier 3 Important (1.5% weight) - Structured logs are machine-parseable
Tier 3 Important (2% weight) - Structured logs are machine-parseable
and enable AI to analyze logs for debugging and optimization.
"""

Expand All @@ -444,7 +444,7 @@ def attribute(self) -> Attribute:
tier=self.tier,
description="Logging in structured format (JSON) with consistent fields",
criteria="Structured logging library configured (structlog, winston, zap)",
default_weight=0.015,
default_weight=0.02,
)

def is_applicable(self, repository: Repository) -> bool:
Expand Down Expand Up @@ -668,8 +668,8 @@ def _has_actionlint(self, repository: Repository) -> bool:
workflows_dir = repository.path / ".github" / "workflows"
if workflows_dir.exists():
try:
for workflow_file in workflows_dir.glob("*.yml") + workflows_dir.glob(
"*.yaml"
for workflow_file in list(workflows_dir.glob("*.yml")) + list(
workflows_dir.glob("*.yaml")
):
content = workflow_file.read_text()
if "actionlint" in content:
Expand Down
4 changes: 2 additions & 2 deletions src/agentready/assessors/documentation.py
Original file line number Diff line number Diff line change
Expand Up @@ -517,7 +517,7 @@ def _create_remediation(self) -> Remediation:
class ArchitectureDecisionsAssessor(BaseAssessor):
"""Assesses presence and quality of Architecture Decision Records (ADRs).

Tier 3 Important (1.5% weight) - ADRs provide historical context for
Tier 3 Important (3% weight) - ADRs provide historical context for
architectural decisions, helping AI understand "why" choices were made.
"""

Expand Down Expand Up @@ -1271,7 +1271,7 @@ def calculate_discount(price: float, discount_percent: float) -> float:
class OpenAPISpecsAssessor(BaseAssessor):
"""Assesses presence and quality of OpenAPI specification.

Tier 3 Important (1.5% weight) - Machine-readable API documentation
Tier 3 Important (3% weight) - Machine-readable API documentation
enables AI to generate client code, tests, and integration code.
"""

Expand Down
2 changes: 1 addition & 1 deletion src/agentready/assessors/security.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ def attribute(self) -> Attribute:
tier=self.tier,
description="Security scanning tools configured for dependencies and code",
criteria="Dependabot, Renovate, CodeQL, or SAST tools configured; secret detection enabled",
default_weight=0.04, # Combined weight
default_weight=0.05,
)

def assess(self, repository: Repository) -> Finding:
Expand Down
2 changes: 1 addition & 1 deletion src/agentready/assessors/stub_assessors.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ def attribute(self) -> Attribute:
tier=self.tier,
description="Dependencies pinned to exact versions in lock files",
criteria="Lock file with pinned versions, updated within 6 months",
default_weight=0.10,
default_weight=0.05,
)

def assess(self, repository: Repository) -> Finding:
Expand Down
Loading