{"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-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f2ef36f934be8687", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-python@v5 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e5b09dab12a4e2c0", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-node@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6f4f005831b9cffc", "name": "Agent authority lacks a verifier contract: skills/judge/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/judge/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-4d9902b8853b17cf", "name": "Agent authority lacks a verifier contract: skills/review/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/review/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-692a8b89b754c824", "name": "Agent instruction/config may expose a secret: skills/adr/SKILL.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: skills/adr/SKILL.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9c1b1b4c53ac3bff", "name": "Agent authority lacks a verifier contract: skills/related/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/related/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-1001e5349deb597d", "name": "Agent authority lacks a verifier contract: skills/context/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/context/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-b0ad3e1247400043", "name": "Agent authority lacks a verifier contract: skills/retire/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/retire/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-495f525e140973c4", "name": "Legacy-named symbol `test_no_record_when_override_unused` in tests/test_adr_judge_override.py:187", "shortDescription": {"text": "Legacy-named symbol `test_no_record_when_override_unused` in tests/test_adr_judge_override.py:187"}, "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-7141604de868102a", "name": "Legacy-named symbol `nOld` in tests/test_adr_status_history.py:156", "shortDescription": {"text": "Legacy-named symbol `nOld` in tests/test_adr_status_history.py:156"}, "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-ab652dcb27da6491", "name": "Commented-code block (5 lines) in templates/validate_adr_template.py:2", "shortDescription": {"text": "Commented-code block (5 lines) in templates/validate_adr_template.py:2"}, "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}}]}}, "automationDetails": {"id": "repobility/18596"}, "properties": {"repository": "rvdbreemen/adr-kit", "repoUrl": "https://github.com/rvdbreemen/adr-kit", "branch": "main"}, "results": [{"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-f2ef36f934be8687", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "132c057a51cb38bb", "scanner": "scanner-primary", "fingerprint": "f2ef36f934be8687", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/adr-lint-self.yml"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-f2ef36f934be8687", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "132c057a51cb38bb", "scanner": "scanner-primary", "fingerprint": "f2ef36f934be8687", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/adr-lint-self.yml"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-e5b09dab12a4e2c0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "27e2aaffd9d55086", "scanner": "scanner-primary", "fingerprint": "e5b09dab12a4e2c0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/validate.yml"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-e5b09dab12a4e2c0", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ef539a8a22cdb5bd", "scanner": "scanner-primary", "fingerprint": "e5b09dab12a4e2c0", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/validate.yml"}, "region": {"startLine": 99}}}]}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "2bb8634b439add63", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-6f4f005831b9cffc", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/judge/SKILL.md"}, "properties": {"repobilityId": "8beb94b6aa04ebb2", "scanner": "scanner-primary", "fingerprint": "6f4f005831b9cffc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/judge/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4d9902b8853b17cf", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/review/SKILL.md"}, "properties": {"repobilityId": "840443cb9c1b0627", "scanner": "scanner-primary", "fingerprint": "4d9902b8853b17cf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/review/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-692a8b89b754c824", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: skills/adr/SKILL.md"}, "properties": {"repobilityId": "db7138524faae5fe", "scanner": "scanner-primary", "fingerprint": "692a8b89b754c824", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/adr/SKILL.md"}, "region": {"startLine": 493}}}]}, {"ruleId": "scanner-9c1b1b4c53ac3bff", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/related/SKILL.md"}, "properties": {"repobilityId": "20ea80eea75d6f16", "scanner": "scanner-primary", "fingerprint": "9c1b1b4c53ac3bff", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/related/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1001e5349deb597d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/context/SKILL.md"}, "properties": {"repobilityId": "c83f53ffb490bbb2", "scanner": "scanner-primary", "fingerprint": "1001e5349deb597d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/context/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b0ad3e1247400043", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/retire/SKILL.md"}, "properties": {"repobilityId": "4897e02be8872cbc", "scanner": "scanner-primary", "fingerprint": "b0ad3e1247400043", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/retire/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-495f525e140973c4", "level": "note", "message": {"text": "Legacy-named symbol `test_no_record_when_override_unused` in tests/test_adr_judge_override.py:187"}, "properties": {"repobilityId": "5f64bd4fcbbf5242", "scanner": "scanner-primary", "fingerprint": "495f525e140973c4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7141604de868102a", "level": "note", "message": {"text": "Legacy-named symbol `nOld` in tests/test_adr_status_history.py:156"}, "properties": {"repobilityId": "f30e8ef6089bbabf", "scanner": "scanner-primary", "fingerprint": "7141604de868102a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ab652dcb27da6491", "level": "none", "message": {"text": "Commented-code block (5 lines) in templates/validate_adr_template.py:2"}, "properties": {"repobilityId": "18ad9bebcec2bb19", "scanner": "scanner-primary", "fingerprint": "ab652dcb27da6491", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}]}]}