{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "scanner-f8d183c161050231", "name": "Possible secret in tests/test_metadata.py", "shortDescription": {"text": "Possible secret in tests/test_metadata.py"}, "fullDescription": {"text": "Detected pattern matching openai_or_anthropic_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-653ba20ee85b77b1", "name": "Insecure pattern 'direct_innerhtml_assignment' in website/app.js:120", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in website/app.js:120"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-80d5ecbf2b74df3a", "name": "Insecure pattern 'direct_innerhtml_assignment' in website/docs.html:147", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in website/docs.html:147"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-76546d04637e1b47", "name": "Insecure pattern 'direct_innerhtml_assignment' in website/coverage.html:192", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in website/coverage.html:192"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-58034f7ab9773f01", "name": "Insecure pattern 'direct_innerhtml_assignment' in website/coverage-report.html:176", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in website/coverage-report.html:176"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f46b15e96552a522", "name": "Insecure pattern 'tls_verify_false' in benchmark/sweep.py:52", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in benchmark/sweep.py:52"}, "fullDescription": {"text": "Found a known-risky pattern (tls_verify_false). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-65a716a27d2be993", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-448d8837178ae57a", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7ffa33751be3d771", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d6fa77d50c248d9a", "name": "Very large file: src/ai_jury/cli.py (1567 lines)", "shortDescription": {"text": "Very large file: src/ai_jury/cli.py (1567 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 59 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 54 placeholder/mock markers across 14 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-05d32334cf2ce70e", "name": "Agent authority lacks a verifier contract: skill/ai-jury/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skill/ai-jury/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b77c65e2dea2b018", "name": "Agent authority lacks a verifier contract: docs/skill.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/skill.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-04fd262986ce1c3d", "name": "Legacy-named symbol `parse_v2` in tests/test_cov_orchestrator.py:553", "shortDescription": {"text": "Legacy-named symbol `parse_v2` in tests/test_cov_orchestrator.py:553"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1a7721eb222b1edb", "name": "Commented-code block (5 lines) in tests/test_chair_selection.py:84", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_chair_selection.py:84"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f71ac8bbd1c856ae", "name": "Commented-code block (7 lines) in tests/test_cli_contract.py:165", "shortDescription": {"text": "Commented-code block (7 lines) in tests/test_cli_contract.py:165"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-57b04515f4e52053", "name": "Commented-code block (6 lines) in src/ai_jury/injection.py:25", "shortDescription": {"text": "Commented-code block (6 lines) in src/ai_jury/injection.py:25"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f11d94a35c0ed275", "name": "Commented-code block (5 lines) in src/ai_jury/cli.py:40", "shortDescription": {"text": "Commented-code block (5 lines) in src/ai_jury/cli.py:40"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a8e0b054d9e2552c", "name": "Commented-code block (6 lines) in src/ai_jury/redaction.py:12", "shortDescription": {"text": "Commented-code block (6 lines) in src/ai_jury/redaction.py:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-16eaeb928dc4ba4a", "name": "Commented-code block (6 lines) in src/ai_jury/orchestrator.py:311", "shortDescription": {"text": "Commented-code block (6 lines) in src/ai_jury/orchestrator.py:311"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d6f36be55bf229ae", "name": "Commented-code block (11 lines) in src/ai_jury/prompts.py:22", "shortDescription": {"text": "Commented-code block (11 lines) in src/ai_jury/prompts.py:22"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-65916e1a9c0d025a", "name": "Commented-code block (6 lines) in src/ai_jury/config.py:53", "shortDescription": {"text": "Commented-code block (6 lines) in src/ai_jury/config.py:53"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-74dc500e120d4856", "name": "Commented-code block (5 lines) in src/ai_jury/adapters.py:130", "shortDescription": {"text": "Commented-code block (5 lines) in src/ai_jury/adapters.py:130"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b9e7a7a9cebb6d96", "name": "Commented-code block (5 lines) in src/ai_jury/github.py:24", "shortDescription": {"text": "Commented-code block (5 lines) in src/ai_jury/github.py:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3e51633345b0f920", "name": "Commented-code block (7 lines) in src/ai_jury/formats.py:127", "shortDescription": {"text": "Commented-code block (7 lines) in src/ai_jury/formats.py:127"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8ff1dbcb90760614", "name": "Commented-code block (5 lines) in src/ai_jury/cache.py:356", "shortDescription": {"text": "Commented-code block (5 lines) in src/ai_jury/cache.py:356"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9dc5f30103c5d7f1", "name": "Commented-code block (5 lines) in src/ai_jury/privilege.py:171", "shortDescription": {"text": "Commented-code block (5 lines) in src/ai_jury/privilege.py:171"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0c4fdbdfc2d4fa84", "name": "Commented-code block (6 lines) in src/ai_jury/voting.py:50", "shortDescription": {"text": "Commented-code block (6 lines) in src/ai_jury/voting.py:50"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4e3c0b077bec8d1a", "name": "Commented-code block (6 lines) in src/ai_jury/findings.py:18", "shortDescription": {"text": "Commented-code block (6 lines) in src/ai_jury/findings.py:18"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7184208e31e6fe7c", "name": "Commented-code block (5 lines) in src/ai_jury/classification.py:41", "shortDescription": {"text": "Commented-code block (5 lines) in src/ai_jury/classification.py:41"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/ai_jury/orchestrator.py:run_jury, src/ai_jury/orchestrator.py:review_diff\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/ai_jury/adapters.py:available, src/ai_jury/adapters.py:available, src/ai_jury/adapters.py:available\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsrc/ai_jury/adapters.py:build_argv, src/ai_jury/adapters.py:build_argv, src/ai_jury/adapters.py:build_argv, src/ai_jury/adapters.py:build_argv\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/24562"}, "properties": {"repository": "berkayturanci/ai-jury", "repoUrl": "https://github.com/berkayturanci/ai-jury", "branch": "main"}, "results": [{"ruleId": "scanner-f8d183c161050231", "level": "error", "message": {"text": "Possible secret in tests/test_metadata.py"}, "properties": {"repobilityId": "8fe3c5cf8d95ab84", "scanner": "scanner-primary", "fingerprint": "f8d183c161050231", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_metadata.py"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-653ba20ee85b77b1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in website/app.js:120"}, "properties": {"repobilityId": "a90fa1cc203bc3db", "scanner": "scanner-primary", "fingerprint": "653ba20ee85b77b1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "website/app.js"}, "region": {"startLine": 120}}}]}, {"ruleId": "scanner-80d5ecbf2b74df3a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in website/docs.html:147"}, "properties": {"repobilityId": "bd0abc438c05d069", "scanner": "scanner-primary", "fingerprint": "80d5ecbf2b74df3a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "website/docs.html"}, "region": {"startLine": 147}}}]}, {"ruleId": "scanner-76546d04637e1b47", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in website/coverage.html:192"}, "properties": {"repobilityId": "55bf76c707da65a0", "scanner": "scanner-primary", "fingerprint": "76546d04637e1b47", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "website/coverage.html"}, "region": {"startLine": 192}}}]}, {"ruleId": "scanner-58034f7ab9773f01", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in website/coverage-report.html:176"}, "properties": {"repobilityId": "9e0a3b8182e7a8d5", "scanner": "scanner-primary", "fingerprint": "58034f7ab9773f01", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "website/coverage-report.html"}, "region": {"startLine": 176}}}]}, {"ruleId": "scanner-f46b15e96552a522", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in benchmark/sweep.py:52"}, "properties": {"repobilityId": "6d84f51a47da0e7c", "scanner": "scanner-primary", "fingerprint": "f46b15e96552a522", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "benchmark/sweep.py"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-65a716a27d2be993", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "3133a88ce98acc76", "scanner": "scanner-primary", "fingerprint": "65a716a27d2be993", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scorecard.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-448d8837178ae57a", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "13af6451e15656fc", "scanner": "scanner-primary", "fingerprint": "448d8837178ae57a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pages.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7ffa33751be3d771", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "491a3ad29cbaf189", "scanner": "scanner-primary", "fingerprint": "7ffa33751be3d771", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/publish.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d6fa77d50c248d9a", "level": "note", "message": {"text": "Very large file: src/ai_jury/cli.py (1567 lines)"}, "properties": {"repobilityId": "d7b7fbf9e57b4679", "scanner": "scanner-primary", "fingerprint": "d6fa77d50c248d9a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "678022a7fa3aaf3c", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "f5bef6eee15876a8", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "e055938f979dfccf", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-05d32334cf2ce70e", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skill/ai-jury/SKILL.md"}, "properties": {"repobilityId": "75d1d3998ed799d5", "scanner": "scanner-primary", "fingerprint": "05d32334cf2ce70e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skill/ai-jury/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b77c65e2dea2b018", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/skill.md"}, "properties": {"repobilityId": "53e8acbd063e6e5a", "scanner": "scanner-primary", "fingerprint": "b77c65e2dea2b018", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/skill.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-04fd262986ce1c3d", "level": "note", "message": {"text": "Legacy-named symbol `parse_v2` in tests/test_cov_orchestrator.py:553"}, "properties": {"repobilityId": "0733a9250f44a0ce", "scanner": "scanner-primary", "fingerprint": "04fd262986ce1c3d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1a7721eb222b1edb", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_chair_selection.py:84"}, "properties": {"repobilityId": "2efc2f4ce322d3fb", "scanner": "scanner-primary", "fingerprint": "1a7721eb222b1edb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f71ac8bbd1c856ae", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/test_cli_contract.py:165"}, "properties": {"repobilityId": "5f416bef3f009930", "scanner": "scanner-primary", "fingerprint": "f71ac8bbd1c856ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57b04515f4e52053", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/ai_jury/injection.py:25"}, "properties": {"repobilityId": "0f2b27ecc21e3f29", "scanner": "scanner-primary", "fingerprint": "57b04515f4e52053", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f11d94a35c0ed275", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/ai_jury/cli.py:40"}, "properties": {"repobilityId": "f9dc60ce91c3caf6", "scanner": "scanner-primary", "fingerprint": "f11d94a35c0ed275", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a8e0b054d9e2552c", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/ai_jury/redaction.py:12"}, "properties": {"repobilityId": "8d337ed2ed9e90b1", "scanner": "scanner-primary", "fingerprint": "a8e0b054d9e2552c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16eaeb928dc4ba4a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/ai_jury/orchestrator.py:311"}, "properties": {"repobilityId": "cd1b4b1b75fbdeb8", "scanner": "scanner-primary", "fingerprint": "16eaeb928dc4ba4a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d6f36be55bf229ae", "level": "none", "message": {"text": "Commented-code block (11 lines) in src/ai_jury/prompts.py:22"}, "properties": {"repobilityId": "5a235a56136d0e84", "scanner": "scanner-primary", "fingerprint": "d6f36be55bf229ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-65916e1a9c0d025a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/ai_jury/config.py:53"}, "properties": {"repobilityId": "67913348b856cb94", "scanner": "scanner-primary", "fingerprint": "65916e1a9c0d025a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-74dc500e120d4856", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/ai_jury/adapters.py:130"}, "properties": {"repobilityId": "6a4e871e0c40b1fe", "scanner": "scanner-primary", "fingerprint": "74dc500e120d4856", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9e7a7a9cebb6d96", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/ai_jury/github.py:24"}, "properties": {"repobilityId": "f3fcccf003a91a2a", "scanner": "scanner-primary", "fingerprint": "b9e7a7a9cebb6d96", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e51633345b0f920", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/ai_jury/formats.py:127"}, "properties": {"repobilityId": "5bc8f301cdae592d", "scanner": "scanner-primary", "fingerprint": "3e51633345b0f920", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ff1dbcb90760614", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/ai_jury/cache.py:356"}, "properties": {"repobilityId": "2f963ce8aad44cc0", "scanner": "scanner-primary", "fingerprint": "8ff1dbcb90760614", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9dc5f30103c5d7f1", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/ai_jury/privilege.py:171"}, "properties": {"repobilityId": "54596e810bc93ee0", "scanner": "scanner-primary", "fingerprint": "9dc5f30103c5d7f1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c4fdbdfc2d4fa84", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/ai_jury/voting.py:50"}, "properties": {"repobilityId": "7977105d2b6303e8", "scanner": "scanner-primary", "fingerprint": "0c4fdbdfc2d4fa84", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4e3c0b077bec8d1a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/ai_jury/findings.py:18"}, "properties": {"repobilityId": "11243e80a5c8160e", "scanner": "scanner-primary", "fingerprint": "4e3c0b077bec8d1a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7184208e31e6fe7c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/ai_jury/classification.py:41"}, "properties": {"repobilityId": "28ae521c051bd477", "scanner": "scanner-primary", "fingerprint": "7184208e31e6fe7c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "9421be195af703ee", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "fa11c65f5baedd47", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "9ff302bc87f53506", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "2c5d9fc22693992d", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "c7245bf84495dc60", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "a0bd6d6193f8fb47", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}