Skip to content
Merged
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
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
[![License](https://img.shields.io/badge/license-Apache%202.0-blue)](LICENSE)
[![Dependencies](https://img.shields.io/badge/core_deps-stdlib_only-brightgreen)]()
[![Last commit](https://img.shields.io/github/last-commit/hummbl-dev/arbiter/main)](https://github.com/hummbl-dev/arbiter/commits/main)
[![Arbiter Score](https://img.shields.io/badge/Arbiter-96.6%20A-brightgreen)](https://github.com/hummbl-dev/arbiter)
[![Complexity](https://img.shields.io/badge/Complexity-91.1%20A-brightgreen)](https://github.com/hummbl-dev/arbiter)

**Agent-aware code quality scoring for multi-agent codebases.**

Expand Down
24 changes: 24 additions & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Arbiter Documentation

Welcome to the Arbiter documentation site.

## Quick Links

- [README](../README.md) - Project overview
- [CONTRIBUTING](../CONTRIBUTING.md) - Contribution guidelines
- [SECURITY](../SECURITY.md) - Security policy
- [ROADMAP](../ROADMAP.md) - Development roadmap

## Core Documentation

- [Platform Design](PLATFORM_DESIGN.md) - Architecture and design decisions
- [Certification Report](CERTIFICATION_REPORT.md) - Certification status
- [Repository Health](REPO_HEALTH.md) - Repo health contract

## Examples

- [CI Example](examples/ci/README.md) - CI integration examples

---

Learn more at [hummbl.io](https://hummbl.io).
2 changes: 1 addition & 1 deletion src/arbiter/audit_trail.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

import hashlib
import json
from dataclasses import dataclass, field
from dataclasses import dataclass
from datetime import datetime, timezone
from pathlib import Path

Expand Down
2 changes: 1 addition & 1 deletion src/arbiter/dep_score.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ def parse_requirements(path: Path) -> list[DepInfo]:
match = _REQ_PATTERN.match(line)
if match:
name = match.group(1).lower().replace("_", "-")
version_spec = line[match.end(1):].strip().lstrip("[").split("]")[0] if "[" in line else line[match.end(1):].strip()
line[match.end(1):].strip().lstrip("[").split("]")[0] if "[" in line else line[match.end(1):].strip()
# Re-extract version spec cleanly
version_part = re.search(r"(==|>=|<=|!=|~=|>|<).*$", line)
deps.append(DepInfo(name, version_part.group(0) if version_part else ""))
Expand Down
1 change: 0 additions & 1 deletion src/arbiter/webhooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import urllib.request
import urllib.error
from dataclasses import asdict, dataclass, field
from datetime import datetime, timezone


@dataclass
Expand Down
4 changes: 1 addition & 3 deletions tests/test_audit_trail.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
"""Tests for VERUM-aligned audit trail — append-only signed score records."""

import json
import hashlib
from pathlib import Path

from arbiter.audit_trail import AuditTrail, AuditRecord, verify_chain
from arbiter.audit_trail import AuditTrail, verify_chain


class TestAuditTrail:
Expand Down
3 changes: 1 addition & 2 deletions tests/test_certify.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
"""Tests for certify — full certification workflow."""

from arbiter.analyzers.base import Finding
from arbiter.scoring import RepoScore
from arbiter.certify import certify, CertificationResult
from arbiter.certify import certify


class _FakeGovReport:
Expand Down
2 changes: 1 addition & 1 deletion tests/test_ci_templates.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""Tests that CI template YAML files parse correctly and contain required keys."""

import pytest
yaml = pytest.importorskip("yaml", reason="PyYAML not installed")
yaml = pytest.importorskip("yaml", reason="PyYAML not installed") # noqa: E402
from pathlib import Path

REPO_ROOT = Path(__file__).parent.parent
Expand Down
1 change: 0 additions & 1 deletion tests/test_compliance_map.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import sys
from pathlib import Path

import pytest

from arbiter.analyzers.base import Finding
from arbiter.compliance_map import (
Expand Down
4 changes: 1 addition & 3 deletions tests/test_governance_quality.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
import pytest
from pathlib import Path
from arbiter.governance_quality import score_governance_quality, GovernanceQualityReport
from arbiter.governance_quality import score_governance_quality

def test_security_md_with_contact_scores_higher_than_empty(tmp_path):
# Empty SECURITY.md
Expand Down
2 changes: 1 addition & 1 deletion tests/test_governance_score.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ def test_alternative_license_names(empty_repo: Path) -> None:
"""Should detect LICENSE.md, LICENSE.txt, and LICENCE variants."""
(empty_repo / "LICENCE.md").write_text("BSD 3-Clause License\n\nRedistribution and use...")
report = score_governance(empty_repo)
lic_check = [c for c in report.checks if c.name == "LICENSE"][0]
[c for c in report.checks if c.name == "LICENSE"][0]
# LICENCE.md is not in our candidates list (we check LICENCE without .md though)
# Let's verify the actual behavior — LICENCE is checked
# Actually LICENCE.md is not in the list, so this tests the negative case
Expand Down
2 changes: 1 addition & 1 deletion tests/test_leaderboard.py
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ def test_rank_ordering(self, test_db: Path) -> None:

# Fleet report orders by overall_score DESC, so flask (96.2) is first
lines = md.split("\n")
table_rows = [l for l in lines if l.startswith("| ") and not l.startswith("| Rank")]
table_rows = [line for line in lines if line.startswith("| ") and not line.startswith("| Rank")]
assert len(table_rows) == 3
assert "pallets/flask" in table_rows[0]
assert "django/django" in table_rows[1]
Expand Down
1 change: 0 additions & 1 deletion tests/test_webhooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
from pathlib import Path
from unittest.mock import MagicMock, patch

import pytest

from arbiter.webhooks import (
WebhookPayload,
Expand Down
Loading