{"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-918f1ee5879e12ac", "name": "TODO/FIXME marker in shipping code \u2014 layout.js:15", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 layout.js:15"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"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-b933e988b7ba0831", "name": "Insecure pattern 'direct_innerhtml_assignment' in product.html:5847", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in product.html:5847"}, "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-2ed27fcfddb74550", "name": "Insecure pattern 'insert_adjacent_html' in product.html:6277", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in product.html:6277"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3d0b8a89cef1e152", "name": "Insecure pattern 'direct_innerhtml_assignment' in support.html:710", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in support.html:710"}, "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-a23128c77ba864c1", "name": "Insecure pattern 'direct_innerhtml_assignment' in country.html:2814", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in country.html:2814"}, "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-74afd0a430173ad7", "name": "Insecure pattern 'direct_innerhtml_assignment' in quote.html:1439", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in quote.html:1439"}, "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-6e42e00c2dfb268a", "name": "Insecure pattern 'direct_innerhtml_assignment' in index.html:6510", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in index.html:6510"}, "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-554cfaec82112c8a", "name": "Insecure pattern 'direct_innerhtml_assignment' in membership.html:712", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in membership.html:712"}, "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-30478b1b1f21cd47", "name": "Insecure pattern 'direct_innerhtml_assignment' in invoice.html:178", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in invoice.html:178"}, "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-6410d3ead25894b8", "name": "Insecure pattern 'direct_innerhtml_assignment' in list.html:1127", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in list.html:1127"}, "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-d4b95f4c8c45b56e", "name": "Insecure pattern 'document_write' in admin.html:12219", "shortDescription": {"text": "Insecure pattern 'document_write' in admin.html:12219"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ffb075a9407f02f0", "name": "Insecure pattern 'direct_innerhtml_assignment' in admin.html:3648", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in admin.html:3648"}, "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-3ee707a6af3db2b7", "name": "Insecure pattern 'insert_adjacent_html' in admin.html:12431", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in admin.html:12431"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4db47e07ab6143c7", "name": "Insecure pattern 'local_storage_auth_token' in admin.html:3696", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in admin.html:3696"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eb0c4716791fa450", "name": "Insecure pattern 'direct_outerhtml_assignment' in layout.js:1210", "shortDescription": {"text": "Insecure pattern 'direct_outerhtml_assignment' in layout.js:1210"}, "fullDescription": {"text": "Found a known-risky pattern (direct_outerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1a9f44f315f8d90f", "name": "Insecure pattern 'insert_adjacent_html' in layout.js:1212", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in layout.js:1212"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b2d310324e78e30c", "name": "Insecure pattern 'direct_innerhtml_assignment' in overseas.html:678", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in overseas.html:678"}, "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-022cf3f3444b2f61", "name": "Insecure pattern 'cors_wildcard' in api/ai-library-autofill.js:7", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in api/ai-library-autofill.js:7"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-44ac5c81e8f0023c", "name": "Insecure pattern 'cors_wildcard' in api/parse-confirm.js:7", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in api/parse-confirm.js:7"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "0 test file(s) for 4 source file(s) (ratio 0.00). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-01f96f71d9907a8c", "name": "README lacks setup or run instructions", "shortDescription": {"text": "README lacks setup or run instructions"}, "fullDescription": {"text": "A README exists, but it does not contain common install/setup/run markers. This matches a frequent generated-code pattern: UI is present, operational handoff is thin."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, tests, operator-readme. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "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-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d653fc60c671fb23", "name": "`fetch()` without try/.catch or AbortSignal \u2014 layout.js:1142", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 layout.js:1142"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-77c5cbc7efbf0300", "name": "`fetch()` without try/.catch or AbortSignal \u2014 api/ai-library-autofill.js:56", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/ai-library-autofill.js:56"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/18553"}, "properties": {"repository": "rubyxjin-cell/choicegolf-home", "repoUrl": "https://github.com/rubyxjin-cell/choicegolf-home", "branch": "main"}, "results": [{"ruleId": "scanner-918f1ee5879e12ac", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 layout.js:15"}, "properties": {"repobilityId": "b32549c50c989e4c", "scanner": "scanner-primary", "fingerprint": "918f1ee5879e12ac", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"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-b933e988b7ba0831", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in product.html:5847"}, "properties": {"repobilityId": "ce7de1985e9d627f", "scanner": "scanner-primary", "fingerprint": "b933e988b7ba0831", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "product.html"}, "region": {"startLine": 5847}}}]}, {"ruleId": "scanner-2ed27fcfddb74550", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in product.html:6277"}, "properties": {"repobilityId": "76f39bbe2de597da", "scanner": "scanner-primary", "fingerprint": "2ed27fcfddb74550", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "product.html"}, "region": {"startLine": 6277}}}]}, {"ruleId": "scanner-3d0b8a89cef1e152", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in support.html:710"}, "properties": {"repobilityId": "5930b34354ed0eb3", "scanner": "scanner-primary", "fingerprint": "3d0b8a89cef1e152", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "support.html"}, "region": {"startLine": 710}}}]}, {"ruleId": "scanner-a23128c77ba864c1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in country.html:2814"}, "properties": {"repobilityId": "923f11e013fd3c68", "scanner": "scanner-primary", "fingerprint": "a23128c77ba864c1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "country.html"}, "region": {"startLine": 2814}}}]}, {"ruleId": "scanner-74afd0a430173ad7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in quote.html:1439"}, "properties": {"repobilityId": "610d74676df3a552", "scanner": "scanner-primary", "fingerprint": "74afd0a430173ad7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "quote.html"}, "region": {"startLine": 1439}}}]}, {"ruleId": "scanner-6e42e00c2dfb268a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in index.html:6510"}, "properties": {"repobilityId": "f91708437a3a5445", "scanner": "scanner-primary", "fingerprint": "6e42e00c2dfb268a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "index.html"}, "region": {"startLine": 6510}}}]}, {"ruleId": "scanner-554cfaec82112c8a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in membership.html:712"}, "properties": {"repobilityId": "2f448e7a17bd01a6", "scanner": "scanner-primary", "fingerprint": "554cfaec82112c8a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "membership.html"}, "region": {"startLine": 712}}}]}, {"ruleId": "scanner-30478b1b1f21cd47", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in invoice.html:178"}, "properties": {"repobilityId": "ed604e13c9cdff57", "scanner": "scanner-primary", "fingerprint": "30478b1b1f21cd47", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "invoice.html"}, "region": {"startLine": 178}}}]}, {"ruleId": "scanner-6410d3ead25894b8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in list.html:1127"}, "properties": {"repobilityId": "a252d8cc2dbca833", "scanner": "scanner-primary", "fingerprint": "6410d3ead25894b8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "list.html"}, "region": {"startLine": 1127}}}]}, {"ruleId": "scanner-d4b95f4c8c45b56e", "level": "note", "message": {"text": "Insecure pattern 'document_write' in admin.html:12219"}, "properties": {"repobilityId": "b73add9be8b2c6c6", "scanner": "scanner-primary", "fingerprint": "d4b95f4c8c45b56e", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "admin.html"}, "region": {"startLine": 12219}}}]}, {"ruleId": "scanner-ffb075a9407f02f0", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in admin.html:3648"}, "properties": {"repobilityId": "6ce12d2fb0d90b99", "scanner": "scanner-primary", "fingerprint": "ffb075a9407f02f0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "admin.html"}, "region": {"startLine": 3648}}}]}, {"ruleId": "scanner-3ee707a6af3db2b7", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in admin.html:12431"}, "properties": {"repobilityId": "8e10605e3a9f4dae", "scanner": "scanner-primary", "fingerprint": "3ee707a6af3db2b7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "admin.html"}, "region": {"startLine": 12431}}}]}, {"ruleId": "scanner-4db47e07ab6143c7", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in admin.html:3696"}, "properties": {"repobilityId": "5d98fd28ca8f6ef4", "scanner": "scanner-primary", "fingerprint": "4db47e07ab6143c7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "admin.html"}, "region": {"startLine": 3696}}}]}, {"ruleId": "scanner-eb0c4716791fa450", "level": "warning", "message": {"text": "Insecure pattern 'direct_outerhtml_assignment' in layout.js:1210"}, "properties": {"repobilityId": "9a2c45e1923149f7", "scanner": "scanner-primary", "fingerprint": "eb0c4716791fa450", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_outerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "layout.js"}, "region": {"startLine": 1210}}}]}, {"ruleId": "scanner-1a9f44f315f8d90f", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in layout.js:1212"}, "properties": {"repobilityId": "f972b990a6eb8d1e", "scanner": "scanner-primary", "fingerprint": "1a9f44f315f8d90f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "layout.js"}, "region": {"startLine": 1212}}}]}, {"ruleId": "scanner-b2d310324e78e30c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in overseas.html:678"}, "properties": {"repobilityId": "02276f8038d95223", "scanner": "scanner-primary", "fingerprint": "b2d310324e78e30c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "overseas.html"}, "region": {"startLine": 678}}}]}, {"ruleId": "scanner-022cf3f3444b2f61", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in api/ai-library-autofill.js:7"}, "properties": {"repobilityId": "4c0380b7106f2d25", "scanner": "scanner-primary", "fingerprint": "022cf3f3444b2f61", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/ai-library-autofill.js"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-44ac5c81e8f0023c", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in api/parse-confirm.js:7"}, "properties": {"repobilityId": "b3b89f4c6d4aca2b", "scanner": "scanner-primary", "fingerprint": "44ac5c81e8f0023c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/parse-confirm.js"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "fc611212cee6d2c6", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-01f96f71d9907a8c", "level": "note", "message": {"text": "README lacks setup or run instructions"}, "properties": {"repobilityId": "1ff9ac25048414d4", "scanner": "scanner-primary", "fingerprint": "01f96f71d9907a8c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["docs", "readme", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "e06a924404257f69", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "197351f3e4212aa5", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "88a1bf83ae002e32", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-d653fc60c671fb23", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 layout.js:1142"}, "properties": {"repobilityId": "ab1f8b070d0b0bdf", "scanner": "scanner-primary", "fingerprint": "d653fc60c671fb23", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-77c5cbc7efbf0300", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 api/ai-library-autofill.js:56"}, "properties": {"repobilityId": "b91563554c9cdeca", "scanner": "scanner-primary", "fingerprint": "77c5cbc7efbf0300", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}]}]}