{"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": "CORE_NO_CI", "name": "No CI/CD configuration found", "shortDescription": {"text": "No CI/CD configuration found"}, "fullDescription": {"text": "Add a CI/CD pipeline: create .github/workflows/ci.yml for GitHub Actions with steps to lint, test, and build on every push and pull request."}, "properties": {"scanner": "repobility-core", "category": "practices", "severity": "medium", "confidence": null, "cwe": "", "owasp": ""}}, {"id": "CORE_NO_README", "name": "No README file found", "shortDescription": {"text": "No README file found"}, "fullDescription": {"text": "Create a README.md with: project name and description, installation instructions, usage examples, configuration options, and contribution guidelines."}, "properties": {"scanner": "repobility-core", "category": "documentation", "severity": "medium", "confidence": null, "cwe": "", "owasp": ""}}, {"id": "AIC003", "name": "Duplicated implementation block across source files", "shortDescription": {"text": "Duplicated implementation block across source files"}, "fullDescription": {"text": "Extract the shared behavior into one function/module or delete the inactive duplicate after proving which path is used."}, "properties": {"scanner": "repobility-ai-code-hygiene", "category": "quality", "severity": "low", "confidence": 0.86, "cwe": "", "owasp": ""}}, {"id": "CORE_NO_LICENSE", "name": "No LICENSE file", "shortDescription": {"text": "No LICENSE file"}, "fullDescription": {"text": "Add a LICENSE file to your repository. Use choosealicense.com to pick the right license (MIT for permissive, Apache 2.0 for patent protection, GPL for copyleft)."}, "properties": {"scanner": "repobility-core", "category": "documentation", "severity": "low", "confidence": null, "cwe": "", "owasp": ""}}, {"id": "CORE_NO_TESTS", "name": "No test files found", "shortDescription": {"text": "No test files found"}, "fullDescription": {"text": "Add a test directory (tests/ or __tests__/) with unit tests for core functionality. Use pytest (Python), Jest (JS/TS), or go test (Go). Start with tests for critical business logic and security-sensitive functions."}, "properties": {"scanner": "repobility-core", "category": "testing", "severity": "high", "confidence": null, "cwe": "", "owasp": ""}}]}}, "automationDetails": {"id": "repobility/460"}, "properties": {"repository": "huskyroboticsteam/HR-pi", "repoUrl": "https://github.com/huskyroboticsteam/HR-pi.git", "branch": "main"}, "results": [{"ruleId": "CORE_NO_CI", "level": "warning", "message": {"text": "No CI/CD configuration found"}, "properties": {"repobilityId": 23642, "scanner": "repobility-core", "fingerprint": "ca5da3551af97272c4f099fc472740148135a15816b81b90bd862e8f91ec66ce", "category": "practices", "severity": "medium", "confidence": null, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"rule_id": "CORE_NO_CI", "scanner": "repobility-core", "correlation_key": "repo|practices|core_no_ci"}}}, {"ruleId": "CORE_NO_README", "level": "warning", "message": {"text": "No README file found"}, "properties": {"repobilityId": 23640, "scanner": "repobility-core", "fingerprint": "b55c73163757fe6b2364bb829fcd26e87b9d9e7b367dd2a3307a814b02b29cbd", "category": "documentation", "severity": "medium", "confidence": null, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"rule_id": "CORE_NO_README", "scanner": "repobility-core", "correlation_key": "repo|documentation|core_no_readme"}}}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23661, "scanner": "repobility-ai-code-hygiene", "fingerprint": "8f8fc35798b0deb67fe00b1a57d8d322b2ba6f5bc63cc5cab02c17aed6c7a74c", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "C_Code/Webcam/Display/stream.cpp", "duplicate_line": 1, "correlation_key": "fp|8f8fc35798b0deb67fe00b1a57d8d322b2ba6f5bc63cc5cab02c17aed6c7a74c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "C_Code/functions.c"}, "region": {"startLine": 36}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23660, "scanner": "repobility-ai-code-hygiene", "fingerprint": "678f9c6f8b24d43259c70cbe20ca8611175eeef30548505e022b316f0c8b8b1b", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "C_Code/Webcam/Display/stream.cpp", "duplicate_line": 1, "correlation_key": "fp|678f9c6f8b24d43259c70cbe20ca8611175eeef30548505e022b316f0c8b8b1b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "C_Code/Webcam/Display/stream_unknown.cpp"}, "region": {"startLine": 22}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23659, "scanner": "repobility-ai-code-hygiene", "fingerprint": "0302ced899a7e736e20ff6bd6bb0be646420bc24afe84191f7fb7fcc6355ea81", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "C_Code/Webcam/Display/stream_spectra.cpp", "duplicate_line": 3, "correlation_key": "fp|0302ced899a7e736e20ff6bd6bb0be646420bc24afe84191f7fb7fcc6355ea81"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "C_Code/Webcam/Display/stream_unknown.cpp"}, "region": {"startLine": 3}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23658, "scanner": "repobility-ai-code-hygiene", "fingerprint": "73a7c624be7bc1f284e6443992f55aa863a6699067eda0e789b194a9111720ae", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "C_Code/Webcam/Display/stream.cpp", "duplicate_line": 3, "correlation_key": "fp|73a7c624be7bc1f284e6443992f55aa863a6699067eda0e789b194a9111720ae"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "C_Code/Webcam/Display/stream_spectra.cpp"}, "region": {"startLine": 24}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23657, "scanner": "repobility-ai-code-hygiene", "fingerprint": "d3907db754a787a249ab933558ce5de9526884e4c4f60ba1c7c39e70d9110966", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "C_Code/Webcam/Display/calibrations.cpp", "duplicate_line": 33, "correlation_key": "fp|d3907db754a787a249ab933558ce5de9526884e4c4f60ba1c7c39e70d9110966"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "C_Code/Webcam/Display/find_peaks.cpp"}, "region": {"startLine": 33}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23656, "scanner": "repobility-ai-code-hygiene", "fingerprint": "914ce2c03c814666dc85cafd1f7bb675e3920030c99ad9b611cd9c8698bd74b9", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "C_Code/Webcam/Display/capture.cpp", "duplicate_line": 20, "correlation_key": "fp|914ce2c03c814666dc85cafd1f7bb675e3920030c99ad9b611cd9c8698bd74b9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "C_Code/Webcam/Display/extract.cpp"}, "region": {"startLine": 4}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23655, "scanner": "repobility-ai-code-hygiene", "fingerprint": "5f728ddb365bd83c785f7a78584e686518b0091936b3342c1773e2acf1589dc7", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "C_Code/Webcam/Display/CMakeFiles/3.31.6/CompilerIdC/CMakeCCompilerId.c", "duplicate_line": 1, "correlation_key": "fp|5f728ddb365bd83c785f7a78584e686518b0091936b3342c1773e2acf1589dc7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "C_Code/Webcam/Display/CMakeFiles/3.31.6/CompilerIdCXX/CMakeCXXCompilerId.cpp"}, "region": {"startLine": 3}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23654, "scanner": "repobility-ai-code-hygiene", "fingerprint": "93f4edb9e76f2d135b921fc90cef33c2e915ee68c061617bc5d50af2245a89d9", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "C_Code/Testing/testEncoder.c", "duplicate_line": 13, "correlation_key": "fp|93f4edb9e76f2d135b921fc90cef33c2e915ee68c061617bc5d50af2245a89d9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "C_Code/Testing/testingHall.c"}, "region": {"startLine": 2}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23653, "scanner": "repobility-ai-code-hygiene", "fingerprint": "e20db29f915da85adf91de6d3717d44c7a929a7be5d83b04373b2e91c3ef34f9", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "C_Code/Testing/testTwoHall.c", "duplicate_line": 1, "correlation_key": "fp|e20db29f915da85adf91de6d3717d44c7a929a7be5d83b04373b2e91c3ef34f9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "C_Code/Testing/testingHall.c"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23652, "scanner": "repobility-ai-code-hygiene", "fingerprint": "7a5cfdca5b6861837b64e4bdd29092f2b3d5fc060ccfc097a30782964f42bce6", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "C_Code/Testing/testEncoder.c", "duplicate_line": 13, "correlation_key": "fp|7a5cfdca5b6861837b64e4bdd29092f2b3d5fc060ccfc097a30782964f42bce6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "C_Code/Testing/testTwoHall.c"}, "region": {"startLine": 2}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23651, "scanner": "repobility-ai-code-hygiene", "fingerprint": "d99220d26f2e4de989496f0b05ca8657439e46b7235112612b97253e94e5d215", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "C_Code/SystemsTesting/waterHeightSensor.c", "duplicate_line": 72, "correlation_key": "fp|d99220d26f2e4de989496f0b05ca8657439e46b7235112612b97253e94e5d215"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "C_Code/SystemsTesting/waterHeightSensor2.c"}, "region": {"startLine": 85}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23650, "scanner": "repobility-ai-code-hygiene", "fingerprint": "c960698ece0edf02524d14f55e91bbb280ddced6b1ebd28fe7ea28fa3c0bef53", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "C_Code/SystemsTesting/WaterLevel/waterLevelRead.c", "duplicate_line": 23, "correlation_key": "fp|c960698ece0edf02524d14f55e91bbb280ddced6b1ebd28fe7ea28fa3c0bef53"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "C_Code/SystemsTesting/waterHeightSensor2.c"}, "region": {"startLine": 42}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23649, "scanner": "repobility-ai-code-hygiene", "fingerprint": "561f46f4348422a6cef44dddaffe533723cc552e11e67c954dac4d78a023e14a", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "C_Code/SystemsTesting/WaterLevel/waterLevelADS1015.c", "duplicate_line": 5, "correlation_key": "fp|561f46f4348422a6cef44dddaffe533723cc552e11e67c954dac4d78a023e14a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "C_Code/SystemsTesting/waterHeightSensor2.c"}, "region": {"startLine": 15}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23648, "scanner": "repobility-ai-code-hygiene", "fingerprint": "f6807a453b0bdca585a472620c9385b51631c65167cbc08d6d112620de771011", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "C_Code/SystemsTesting/WaterLevel/waterLevelRead.c", "duplicate_line": 65, "correlation_key": "fp|f6807a453b0bdca585a472620c9385b51631c65167cbc08d6d112620de771011"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "C_Code/SystemsTesting/waterHeightSensor.c"}, "region": {"startLine": 71}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23647, "scanner": "repobility-ai-code-hygiene", "fingerprint": "7e9b481fd319e290cca14234bbe4b3e9e9413d034ea7a606cd7f5ee4b8c6b54c", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "C_Code/SystemsTesting/WaterLevel/waterLevelADS1015.c", "duplicate_line": 6, "correlation_key": "fp|7e9b481fd319e290cca14234bbe4b3e9e9413d034ea7a606cd7f5ee4b8c6b54c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "C_Code/SystemsTesting/waterHeightSensor.c"}, "region": {"startLine": 47}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23646, "scanner": "repobility-ai-code-hygiene", "fingerprint": "0c13a50bcc1faf701a346dbdc45d0190da4a6b603f9c049784517462f9b298a8", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "C_Code/SystemsTesting/pressureSensor.c", "duplicate_line": 1, "correlation_key": "fp|0c13a50bcc1faf701a346dbdc45d0190da4a6b603f9c049784517462f9b298a8"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "C_Code/SystemsTesting/tempSensor.c"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23645, "scanner": "repobility-ai-code-hygiene", "fingerprint": "4a8e7b80ab902cba991806222a6a56b07fad5b189d3ca63098a60c23da9014a9", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "C_Code/SystemsTesting/pressureSensor.c", "duplicate_line": 17, "correlation_key": "fp|4a8e7b80ab902cba991806222a6a56b07fad5b189d3ca63098a60c23da9014a9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "C_Code/SystemsTesting/pressureSensorRead.c"}, "region": {"startLine": 18}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23644, "scanner": "repobility-ai-code-hygiene", "fingerprint": "a634ae83a075217f3555109596f5a40aa7122c8a2f0bae9e1c747772943f3ac0", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "C_Code/SystemsTesting/Centrifuge/centrifugeTest(old).c", "duplicate_line": 1, "correlation_key": "fp|a634ae83a075217f3555109596f5a40aa7122c8a2f0bae9e1c747772943f3ac0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "C_Code/SystemsTesting/Centrifuge/rotateCBy(old).c"}, "region": {"startLine": 3}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 23643, "scanner": "repobility-ai-code-hygiene", "fingerprint": "3923a0621d71486469ad685369e6eba7a37e5b3ff55182343f19fc581dbfe294", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "C_Code/SystemsTesting/Centrifuge/centrifugeTest(old).c", "duplicate_line": 1, "correlation_key": "fp|3923a0621d71486469ad685369e6eba7a37e5b3ff55182343f19fc581dbfe294"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "C_Code/SystemsTesting/Centrifuge/centrifugeTest.c"}, "region": {"startLine": 1}}}]}, {"ruleId": "CORE_NO_LICENSE", "level": "note", "message": {"text": "No LICENSE file"}, "properties": {"repobilityId": 23641, "scanner": "repobility-core", "fingerprint": "9314e9238cd99885865b92490d1aaa96ca62b1390c9377878d5f3d99227e1c3c", "category": "documentation", "severity": "low", "confidence": null, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"rule_id": "CORE_NO_LICENSE", "scanner": "repobility-core", "correlation_key": "repo|documentation|core_no_license"}}}, {"ruleId": "CORE_NO_TESTS", "level": "error", "message": {"text": "No test files found"}, "properties": {"repobilityId": 23639, "scanner": "repobility-core", "fingerprint": "0200e9918bc2a7bf9c116d0907e50ac3df640c758b93852cf1890ec6e14d870d", "category": "testing", "severity": "high", "confidence": null, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"rule_id": "CORE_NO_TESTS", "scanner": "repobility-core", "correlation_key": "repo|testing|core_no_tests"}}}]}]}