{"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-c115cbb9e78ff203", "name": "TODO/FIXME marker in shipping code \u2014 assets/libs/jquery/src/data.js:85", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 assets/libs/jquery/src/data.js:85"}, "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-12012ef342c0ed49", "name": "TODO/FIXME marker in shipping code \u2014 assets/libs/bootstrap/js/tests/unit/dropdown.spec.js:64", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 assets/libs/bootstrap/js/tests/unit/dropdown.spec.js:64"}, "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-3f60c6d63306d916", "name": "TODO/FIXME marker in shipping code \u2014 assets/libs/bootstrap/js/src/scrollspy.js:42", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 assets/libs/bootstrap/js/src/scrollspy.js:42"}, "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-993d4f73a752a434", "name": "TODO/FIXME marker in shipping code \u2014 assets/libs/bootstrap/js/src/tab.js:48", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 assets/libs/bootstrap/js/src/tab.js:48"}, "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-e6afc6a22d88b65d", "name": "TODO/FIXME marker in shipping code \u2014 assets/libs/bootstrap/js/src/tooltip.js:201", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 assets/libs/bootstrap/js/src/tooltip.js:201"}, "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-e7bf6b4e771c2cb1", "name": "TODO/FIXME marker in shipping code \u2014 assets/libs/bootstrap/js/src/dropdown.js:99", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 assets/libs/bootstrap/js/src/dropdown.js:99"}, "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-3ac390e7a6134064", "name": "TODO/FIXME marker in shipping code \u2014 assets/libs/bootstrap/js/src/carousel.js:80", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 assets/libs/bootstrap/js/src/carousel.js:80"}, "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-6cb0a97e9f37a810", "name": "TODO/FIXME marker in shipping code \u2014 assets/libs/bootstrap/js/src/dom/selector-engine.js:73", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 assets/libs/bootstrap/js/src/dom/selector-engine.js:73"}, "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-8b9b19a44e2d3a50", "name": "TODO/FIXME marker in shipping code \u2014 assets/libs/bootstrap/js/src/dom/event-handler.js:131", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 assets/libs/bootstrap/js/src/dom/event-handler.js:131"}, "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-b19ede3842945a56", "name": "Insecure pattern 'direct_innerhtml_assignment' in automations.html:687", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in automations.html:687"}, "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-d6ff92621c72f0aa", "name": "Insecure pattern 'direct_innerhtml_assignment' in crm.html:1068", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in crm.html:1068"}, "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-003f3aab804c15d6", "name": "Insecure pattern 'direct_innerhtml_assignment' in voice-ai.html:1027", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in voice-ai.html:1027"}, "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-91f0f60d77e57944", "name": "Possible secret in ai-marketing-bureau.html", "shortDescription": {"text": "Possible secret in ai-marketing-bureau.html"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-008a92b2d45db808", "name": "Insecure pattern 'direct_innerhtml_assignment' in ai-marketing-bureau.html:538", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ai-marketing-bureau.html:538"}, "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-d82a10081386e273", "name": "Insecure pattern 'direct_innerhtml_assignment' in linkbuilding.html:1043", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in linkbuilding.html:1043"}, "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-9a0646ef1e195fd9", "name": "Insecure pattern 'direct_innerhtml_assignment' in chatbot.html:1074", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in chatbot.html:1074"}, "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-fdf6ddefb6e7e681", "name": "Possible secret in 404.html", "shortDescription": {"text": "Possible secret in 404.html"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-08cabfe7fa512f83", "name": "Insecure pattern 'direct_innerhtml_assignment' in 404.html:182", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in 404.html:182"}, "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-a54eec6dd562eec8", "name": "Insecure pattern 'direct_innerhtml_assignment' in social-media.html:1197", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in social-media.html:1197"}, "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-c90d4a9b810378a2", "name": "Insecure pattern 'direct_innerhtml_assignment' in reviews.html:1001", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in reviews.html:1001"}, "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-fc4019800842fd70", "name": "Insecure pattern 'direct_innerhtml_assignment' in seo.html:1005", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in seo.html:1005"}, "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-cd861855a9632d9a", "name": "Insecure pattern 'direct_innerhtml_assignment' in website-laten-maken.html:1248", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in website-laten-maken.html:1248"}, "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-be22501779e024a5", "name": "Insecure pattern 'direct_innerhtml_assignment' in blog.html:1014", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in blog.html:1014"}, "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-c0b917b71ac0ecc1", "name": "Insecure pattern 'direct_innerhtml_assignment' in marketing-uitbesteden.html:1000", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in marketing-uitbesteden.html:1000"}, "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-97226f1541a3afe5", "name": "Insecure pattern 'direct_innerhtml_assignment' in herinneringen.html:761", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in herinneringen.html:761"}, "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-581743702330f76b", "name": "Insecure pattern 'direct_innerhtml_assignment' in blog/author/tim-van-der-lee/index.html:330", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in blog/author/tim-van-der-lee/index.html:330"}, "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-13a5700dd832811a", "name": "Insecure pattern 'domparser_html_parse' in blog/author/tim-van-der-lee/index.html:313", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in blog/author/tim-van-der-lee/index.html:313"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5ffbcc2deed45ae6", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/cookie-banner.js:18", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/cookie-banner.js:18"}, "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-2c6f85e5662c44b9", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/related-articles.js:184", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/related-articles.js:184"}, "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-4b5a78761642c451", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/libs/jquery/src/manipulation.js:425", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/libs/jquery/src/manipulation.js:425"}, "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-cdc496b652713c32", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/libs/jquery/src/selector.js:670", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/libs/jquery/src/selector.js:670"}, "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-446bd28cabac7af3", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/libs/jquery/src/manipulation/buildFragment.js:46", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/libs/jquery/src/manipulation/buildFragment.js:46"}, "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-a99a53cbf956a308", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/libs/jquery/src/manipulation/support.js:29", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/libs/jquery/src/manipulation/support.js:29"}, "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-173caa6a6dc6f35d", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/libs/jquery/src/core/support.js:15", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/libs/jquery/src/core/support.js:15"}, "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-459401fc7b2b86c8", "name": "Insecure pattern 'domparser_html_parse' in assets/libs/bootstrap/js/src/util/sanitizer.js:95", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in assets/libs/bootstrap/js/src/util/sanitizer.js:95"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "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-43e29cae4717e166", "name": "Very large file: assets/libs/jquery/src/selector.js (2117 lines)", "shortDescription": {"text": "Very large file: assets/libs/jquery/src/selector.js (2117 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-fda018c34a2a79e8", "name": "Very large file: assets/libs/bootstrap/js/tests/unit/tooltip.spec.js (1585 lines)", "shortDescription": {"text": "Very large file: assets/libs/bootstrap/js/tests/unit/tooltip.spec.js (1585 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-4757c0c408a37c39", "name": "Very large file: assets/libs/bootstrap/js/tests/unit/dropdown.spec.js (2436 lines)", "shortDescription": {"text": "Very large file: assets/libs/bootstrap/js/tests/unit/dropdown.spec.js (2436 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-01f801e97aeda341", "name": "Very large file: assets/libs/bootstrap/js/tests/unit/carousel.spec.js (1572 lines)", "shortDescription": {"text": "Very large file: assets/libs/bootstrap/js/tests/unit/carousel.spec.js (1572 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-ea3b5e389d8c9c0f", "name": "Low test-to-source ratio", "shortDescription": {"text": "Low test-to-source ratio"}, "fullDescription": {"text": "37 tests / 149 src (ratio 0.25)."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6e0428b23e24ee4c", "name": "Node manifest has dependencies but no lockfile: assets/libs/aos-master/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: assets/libs/aos-master/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fa3b30b781271c6b", "name": "Node manifest has dependencies but no lockfile: assets/libs/jquery/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: assets/libs/jquery/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-494bd5e0c93148ec", "name": "Node manifest has dependencies but no lockfile: assets/libs/bootstrap/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: assets/libs/bootstrap/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "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-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: ci, lockfile. 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": "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-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-038875fc44490c78", "name": "`fetch()` without try/.catch or AbortSignal \u2014 assets/js/related-articles.js:170", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 assets/js/related-articles.js:170"}, "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-ed85856cd4480789", "name": "Commented-code block (6 lines) in assets/libs/jquery/src/css.js:379", "shortDescription": {"text": "Commented-code block (6 lines) in assets/libs/jquery/src/css.js:379"}, "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-d934a2a733990470", "name": "Commented-code block (5 lines) in assets/libs/jquery/src/event.js:368", "shortDescription": {"text": "Commented-code block (5 lines) in assets/libs/jquery/src/event.js:368"}, "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-ca9a7438f502eb22", "name": "Legacy-named symbol `pdataOld` in assets/libs/jquery/src/manipulation.js:73", "shortDescription": {"text": "Legacy-named symbol `pdataOld` in assets/libs/jquery/src/manipulation.js:73"}, "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-aa231f5035c1c956", "name": "Commented-code block (7 lines) in assets/libs/jquery/src/data.js:13", "shortDescription": {"text": "Commented-code block (7 lines) in assets/libs/jquery/src/data.js:13"}, "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-3a9abc6fc5e24288", "name": "Commented-code block (5 lines) in assets/libs/jquery/src/offset.js:155", "shortDescription": {"text": "Commented-code block (5 lines) in assets/libs/jquery/src/offset.js:155"}, "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-4d7996d7abeb504b", "name": "Commented-code block (6 lines) in assets/libs/jquery/src/selector.js:288", "shortDescription": {"text": "Commented-code block (6 lines) in assets/libs/jquery/src/selector.js:288"}, "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-53f8c5e799b6f202", "name": "Commented-code block (8 lines) in assets/libs/jquery/src/attributes/prop.js:91", "shortDescription": {"text": "Commented-code block (8 lines) in assets/libs/jquery/src/attributes/prop.js:91"}, "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-0aa009eb02b2f2b6", "name": "Commented-code block (7 lines) in assets/libs/jquery/src/var/isFunction.js:6", "shortDescription": {"text": "Commented-code block (7 lines) in assets/libs/jquery/src/var/isFunction.js:6"}, "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-d99fb34cbc77c5dc", "name": "Commented-code block (5 lines) in assets/libs/jquery/src/css/support.js:100", "shortDescription": {"text": "Commented-code block (5 lines) in assets/libs/jquery/src/css/support.js:100"}, "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-e8d748fdf2d6f290", "name": "Commented-code block (9 lines) in assets/libs/jquery/src/css/curCSS.js:32", "shortDescription": {"text": "Commented-code block (9 lines) in assets/libs/jquery/src/css/curCSS.js:32"}, "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-caa0f6861c726475", "name": "Commented-code block (7 lines) in assets/libs/jquery/src/css/var/isHiddenWithinTree.js:9", "shortDescription": {"text": "Commented-code block (7 lines) in assets/libs/jquery/src/css/var/isHiddenWithinTree.js:9"}, "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-2a53d5c80e942ef5", "name": "Commented-code block (5 lines) in assets/libs/jquery/src/ajax/xhr.js:59", "shortDescription": {"text": "Commented-code block (5 lines) in assets/libs/jquery/src/ajax/xhr.js:59"}, "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-b1a627854bb4fe09", "name": "Commented-code block (5 lines) in assets/libs/jquery/src/core/isAttached.js:13", "shortDescription": {"text": "Commented-code block (5 lines) in assets/libs/jquery/src/core/isAttached.js:13"}, "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-7ca0306ebe6ec10f", "name": "Commented-code block (5 lines) in assets/libs/jquery/src/core/support.js:8", "shortDescription": {"text": "Commented-code block (5 lines) in assets/libs/jquery/src/core/support.js:8"}, "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-9a6bb4098584443e", "name": "Commented-code block (7 lines) in assets/libs/bootstrap/js/src/carousel.js:229", "shortDescription": {"text": "Commented-code block (7 lines) in assets/libs/bootstrap/js/src/carousel.js:229"}, "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/20426"}, "properties": {"repository": "StudioLee-cmd/studiolee-3", "repoUrl": "https://github.com/StudioLee-cmd/studiolee-3", "branch": "main"}, "results": [{"ruleId": "scanner-c115cbb9e78ff203", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 assets/libs/jquery/src/data.js:85"}, "properties": {"repobilityId": "2d33ac49497ef2de", "scanner": "scanner-primary", "fingerprint": "c115cbb9e78ff203", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-12012ef342c0ed49", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 assets/libs/bootstrap/js/tests/unit/dropdown.spec.js:64"}, "properties": {"repobilityId": "40365101e075dbff", "scanner": "scanner-primary", "fingerprint": "12012ef342c0ed49", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-3f60c6d63306d916", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 assets/libs/bootstrap/js/src/scrollspy.js:42"}, "properties": {"repobilityId": "f6c1e1173cd7e8f5", "scanner": "scanner-primary", "fingerprint": "3f60c6d63306d916", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-993d4f73a752a434", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 assets/libs/bootstrap/js/src/tab.js:48"}, "properties": {"repobilityId": "1d584899f6a3b67c", "scanner": "scanner-primary", "fingerprint": "993d4f73a752a434", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-e6afc6a22d88b65d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 assets/libs/bootstrap/js/src/tooltip.js:201"}, "properties": {"repobilityId": "07bb2cc0cdecc076", "scanner": "scanner-primary", "fingerprint": "e6afc6a22d88b65d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-e7bf6b4e771c2cb1", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 assets/libs/bootstrap/js/src/dropdown.js:99"}, "properties": {"repobilityId": "e9b3719a19c212ef", "scanner": "scanner-primary", "fingerprint": "e7bf6b4e771c2cb1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-3ac390e7a6134064", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 assets/libs/bootstrap/js/src/carousel.js:80"}, "properties": {"repobilityId": "0c6463e5e7c7fcc8", "scanner": "scanner-primary", "fingerprint": "3ac390e7a6134064", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-6cb0a97e9f37a810", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 assets/libs/bootstrap/js/src/dom/selector-engine.js:73"}, "properties": {"repobilityId": "8c8183cd103a5e72", "scanner": "scanner-primary", "fingerprint": "6cb0a97e9f37a810", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-8b9b19a44e2d3a50", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 assets/libs/bootstrap/js/src/dom/event-handler.js:131"}, "properties": {"repobilityId": "1ce33f3a667c376a", "scanner": "scanner-primary", "fingerprint": "8b9b19a44e2d3a50", "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-b19ede3842945a56", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in automations.html:687"}, "properties": {"repobilityId": "c0e2260054741e71", "scanner": "scanner-primary", "fingerprint": "b19ede3842945a56", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "automations.html"}, "region": {"startLine": 687}}}]}, {"ruleId": "scanner-d6ff92621c72f0aa", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in crm.html:1068"}, "properties": {"repobilityId": "43ec22331d46b6f4", "scanner": "scanner-primary", "fingerprint": "d6ff92621c72f0aa", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "crm.html"}, "region": {"startLine": 1068}}}]}, {"ruleId": "scanner-003f3aab804c15d6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in voice-ai.html:1027"}, "properties": {"repobilityId": "058644c2b5f4713e", "scanner": "scanner-primary", "fingerprint": "003f3aab804c15d6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "voice-ai.html"}, "region": {"startLine": 1027}}}]}, {"ruleId": "scanner-91f0f60d77e57944", "level": "error", "message": {"text": "Possible secret in ai-marketing-bureau.html"}, "properties": {"repobilityId": "7ede3e53839c01b5", "scanner": "scanner-primary", "fingerprint": "91f0f60d77e57944", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ai-marketing-bureau.html"}, "region": {"startLine": 627}}}]}, {"ruleId": "scanner-008a92b2d45db808", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ai-marketing-bureau.html:538"}, "properties": {"repobilityId": "30d2103bcdab961c", "scanner": "scanner-primary", "fingerprint": "008a92b2d45db808", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ai-marketing-bureau.html"}, "region": {"startLine": 538}}}]}, {"ruleId": "scanner-d82a10081386e273", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in linkbuilding.html:1043"}, "properties": {"repobilityId": "5a266583684786ad", "scanner": "scanner-primary", "fingerprint": "d82a10081386e273", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "linkbuilding.html"}, "region": {"startLine": 1043}}}]}, {"ruleId": "scanner-9a0646ef1e195fd9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in chatbot.html:1074"}, "properties": {"repobilityId": "6d61a149dc8e2563", "scanner": "scanner-primary", "fingerprint": "9a0646ef1e195fd9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "chatbot.html"}, "region": {"startLine": 1074}}}]}, {"ruleId": "scanner-fdf6ddefb6e7e681", "level": "error", "message": {"text": "Possible secret in 404.html"}, "properties": {"repobilityId": "cc54a23ff6d4faa2", "scanner": "scanner-primary", "fingerprint": "fdf6ddefb6e7e681", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "404.html"}, "region": {"startLine": 356}}}]}, {"ruleId": "scanner-08cabfe7fa512f83", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in 404.html:182"}, "properties": {"repobilityId": "1995879b743b7b70", "scanner": "scanner-primary", "fingerprint": "08cabfe7fa512f83", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "404.html"}, "region": {"startLine": 182}}}]}, {"ruleId": "scanner-a54eec6dd562eec8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in social-media.html:1197"}, "properties": {"repobilityId": "11cf4aafd311af90", "scanner": "scanner-primary", "fingerprint": "a54eec6dd562eec8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "social-media.html"}, "region": {"startLine": 1197}}}]}, {"ruleId": "scanner-c90d4a9b810378a2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in reviews.html:1001"}, "properties": {"repobilityId": "e17f3209177082fd", "scanner": "scanner-primary", "fingerprint": "c90d4a9b810378a2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reviews.html"}, "region": {"startLine": 1001}}}]}, {"ruleId": "scanner-fc4019800842fd70", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in seo.html:1005"}, "properties": {"repobilityId": "5fb16be836271b54", "scanner": "scanner-primary", "fingerprint": "fc4019800842fd70", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "seo.html"}, "region": {"startLine": 1005}}}]}, {"ruleId": "scanner-cd861855a9632d9a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in website-laten-maken.html:1248"}, "properties": {"repobilityId": "be8c8a426f9cb43b", "scanner": "scanner-primary", "fingerprint": "cd861855a9632d9a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "website-laten-maken.html"}, "region": {"startLine": 1248}}}]}, {"ruleId": "scanner-be22501779e024a5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in blog.html:1014"}, "properties": {"repobilityId": "6e3e93af935dd1c7", "scanner": "scanner-primary", "fingerprint": "be22501779e024a5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "blog.html"}, "region": {"startLine": 1014}}}]}, {"ruleId": "scanner-c0b917b71ac0ecc1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in marketing-uitbesteden.html:1000"}, "properties": {"repobilityId": "90bd05fe3d9166fb", "scanner": "scanner-primary", "fingerprint": "c0b917b71ac0ecc1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "marketing-uitbesteden.html"}, "region": {"startLine": 1000}}}]}, {"ruleId": "scanner-97226f1541a3afe5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in herinneringen.html:761"}, "properties": {"repobilityId": "3212d065dea234a1", "scanner": "scanner-primary", "fingerprint": "97226f1541a3afe5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "herinneringen.html"}, "region": {"startLine": 761}}}]}, {"ruleId": "scanner-581743702330f76b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in blog/author/tim-van-der-lee/index.html:330"}, "properties": {"repobilityId": "f5f5c68d4121efd1", "scanner": "scanner-primary", "fingerprint": "581743702330f76b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "blog/author/tim-van-der-lee/index.html"}, "region": {"startLine": 330}}}]}, {"ruleId": "scanner-13a5700dd832811a", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in blog/author/tim-van-der-lee/index.html:313"}, "properties": {"repobilityId": "9076250f0852d14e", "scanner": "scanner-primary", "fingerprint": "13a5700dd832811a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "blog/author/tim-van-der-lee/index.html"}, "region": {"startLine": 313}}}]}, {"ruleId": "scanner-5ffbcc2deed45ae6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/cookie-banner.js:18"}, "properties": {"repobilityId": "d3b66c25ca5625a9", "scanner": "scanner-primary", "fingerprint": "5ffbcc2deed45ae6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/js/cookie-banner.js"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-2c6f85e5662c44b9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/js/related-articles.js:184"}, "properties": {"repobilityId": "a44660a05dcdc361", "scanner": "scanner-primary", "fingerprint": "2c6f85e5662c44b9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/js/related-articles.js"}, "region": {"startLine": 184}}}]}, {"ruleId": "scanner-4b5a78761642c451", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/libs/jquery/src/manipulation.js:425"}, "properties": {"repobilityId": "e721a225c6c9dbc8", "scanner": "scanner-primary", "fingerprint": "4b5a78761642c451", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/libs/jquery/src/manipulation.js"}, "region": {"startLine": 425}}}]}, {"ruleId": "scanner-cdc496b652713c32", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/libs/jquery/src/selector.js:670"}, "properties": {"repobilityId": "2aa61f3551013343", "scanner": "scanner-primary", "fingerprint": "cdc496b652713c32", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/libs/jquery/src/selector.js"}, "region": {"startLine": 670}}}]}, {"ruleId": "scanner-446bd28cabac7af3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/libs/jquery/src/manipulation/buildFragment.js:46"}, "properties": {"repobilityId": "0d2883834e16fcae", "scanner": "scanner-primary", "fingerprint": "446bd28cabac7af3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/libs/jquery/src/manipulation/buildFragment.js"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-a99a53cbf956a308", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/libs/jquery/src/manipulation/support.js:29"}, "properties": {"repobilityId": "a81ec40229a0ec39", "scanner": "scanner-primary", "fingerprint": "a99a53cbf956a308", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/libs/jquery/src/manipulation/support.js"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-173caa6a6dc6f35d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/libs/jquery/src/core/support.js:15"}, "properties": {"repobilityId": "99ad950d3f20cac2", "scanner": "scanner-primary", "fingerprint": "173caa6a6dc6f35d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/libs/jquery/src/core/support.js"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-459401fc7b2b86c8", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in assets/libs/bootstrap/js/src/util/sanitizer.js:95"}, "properties": {"repobilityId": "ec9da702f1514b5c", "scanner": "scanner-primary", "fingerprint": "459401fc7b2b86c8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/libs/bootstrap/js/src/util/sanitizer.js"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"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-43e29cae4717e166", "level": "note", "message": {"text": "Very large file: assets/libs/jquery/src/selector.js (2117 lines)"}, "properties": {"repobilityId": "9a40ad9760a434b1", "scanner": "scanner-primary", "fingerprint": "43e29cae4717e166", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fda018c34a2a79e8", "level": "note", "message": {"text": "Very large file: assets/libs/bootstrap/js/tests/unit/tooltip.spec.js (1585 lines)"}, "properties": {"repobilityId": "76bf443ef216b3a1", "scanner": "scanner-primary", "fingerprint": "fda018c34a2a79e8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4757c0c408a37c39", "level": "note", "message": {"text": "Very large file: assets/libs/bootstrap/js/tests/unit/dropdown.spec.js (2436 lines)"}, "properties": {"repobilityId": "87766e6ab0f2648f", "scanner": "scanner-primary", "fingerprint": "4757c0c408a37c39", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-01f801e97aeda341", "level": "note", "message": {"text": "Very large file: assets/libs/bootstrap/js/tests/unit/carousel.spec.js (1572 lines)"}, "properties": {"repobilityId": "e70fc7400e5305ce", "scanner": "scanner-primary", "fingerprint": "01f801e97aeda341", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea3b5e389d8c9c0f", "level": "note", "message": {"text": "Low test-to-source ratio"}, "properties": {"repobilityId": "ef7b2552cc00a375", "scanner": "scanner-primary", "fingerprint": "ea3b5e389d8c9c0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["tests"]}}, {"ruleId": "scanner-6e0428b23e24ee4c", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: assets/libs/aos-master/package.json"}, "properties": {"repobilityId": "4a4c906e1b948a44", "scanner": "scanner-primary", "fingerprint": "6e0428b23e24ee4c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/libs/aos-master/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fa3b30b781271c6b", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: assets/libs/jquery/package.json"}, "properties": {"repobilityId": "0e9b6023b30b5054", "scanner": "scanner-primary", "fingerprint": "fa3b30b781271c6b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/libs/jquery/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-494bd5e0c93148ec", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: assets/libs/bootstrap/package.json"}, "properties": {"repobilityId": "42a7f37f618b109c", "scanner": "scanner-primary", "fingerprint": "494bd5e0c93148ec", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/libs/bootstrap/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "188b3ecd1c5a6d26", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "edf86c97213130e7", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "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": "219669e877914195", "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": "5b9427d807c670c9", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-038875fc44490c78", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 assets/js/related-articles.js:170"}, "properties": {"repobilityId": "ede50639ffd2137d", "scanner": "scanner-primary", "fingerprint": "038875fc44490c78", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ed85856cd4480789", "level": "none", "message": {"text": "Commented-code block (6 lines) in assets/libs/jquery/src/css.js:379"}, "properties": {"repobilityId": "51870d895c4d5b62", "scanner": "scanner-primary", "fingerprint": "ed85856cd4480789", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d934a2a733990470", "level": "none", "message": {"text": "Commented-code block (5 lines) in assets/libs/jquery/src/event.js:368"}, "properties": {"repobilityId": "379e4e623ec01126", "scanner": "scanner-primary", "fingerprint": "d934a2a733990470", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca9a7438f502eb22", "level": "note", "message": {"text": "Legacy-named symbol `pdataOld` in assets/libs/jquery/src/manipulation.js:73"}, "properties": {"repobilityId": "9706ac8f92d04da1", "scanner": "scanner-primary", "fingerprint": "ca9a7438f502eb22", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-aa231f5035c1c956", "level": "none", "message": {"text": "Commented-code block (7 lines) in assets/libs/jquery/src/data.js:13"}, "properties": {"repobilityId": "65fc8f73c381d0d2", "scanner": "scanner-primary", "fingerprint": "aa231f5035c1c956", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3a9abc6fc5e24288", "level": "none", "message": {"text": "Commented-code block (5 lines) in assets/libs/jquery/src/offset.js:155"}, "properties": {"repobilityId": "3b017581b05efe09", "scanner": "scanner-primary", "fingerprint": "3a9abc6fc5e24288", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d7996d7abeb504b", "level": "none", "message": {"text": "Commented-code block (6 lines) in assets/libs/jquery/src/selector.js:288"}, "properties": {"repobilityId": "d336db35e7bfe689", "scanner": "scanner-primary", "fingerprint": "4d7996d7abeb504b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53f8c5e799b6f202", "level": "none", "message": {"text": "Commented-code block (8 lines) in assets/libs/jquery/src/attributes/prop.js:91"}, "properties": {"repobilityId": "cfef1992187537fc", "scanner": "scanner-primary", "fingerprint": "53f8c5e799b6f202", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0aa009eb02b2f2b6", "level": "none", "message": {"text": "Commented-code block (7 lines) in assets/libs/jquery/src/var/isFunction.js:6"}, "properties": {"repobilityId": "d8ba601a521721e8", "scanner": "scanner-primary", "fingerprint": "0aa009eb02b2f2b6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d99fb34cbc77c5dc", "level": "none", "message": {"text": "Commented-code block (5 lines) in assets/libs/jquery/src/css/support.js:100"}, "properties": {"repobilityId": "e3b016a3fcb0967e", "scanner": "scanner-primary", "fingerprint": "d99fb34cbc77c5dc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e8d748fdf2d6f290", "level": "none", "message": {"text": "Commented-code block (9 lines) in assets/libs/jquery/src/css/curCSS.js:32"}, "properties": {"repobilityId": "0517c64775214e99", "scanner": "scanner-primary", "fingerprint": "e8d748fdf2d6f290", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-caa0f6861c726475", "level": "none", "message": {"text": "Commented-code block (7 lines) in assets/libs/jquery/src/css/var/isHiddenWithinTree.js:9"}, "properties": {"repobilityId": "c995c20a6bf6cce0", "scanner": "scanner-primary", "fingerprint": "caa0f6861c726475", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a53d5c80e942ef5", "level": "none", "message": {"text": "Commented-code block (5 lines) in assets/libs/jquery/src/ajax/xhr.js:59"}, "properties": {"repobilityId": "0f7b7061df0b7cea", "scanner": "scanner-primary", "fingerprint": "2a53d5c80e942ef5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b1a627854bb4fe09", "level": "none", "message": {"text": "Commented-code block (5 lines) in assets/libs/jquery/src/core/isAttached.js:13"}, "properties": {"repobilityId": "16f09d3dad2d5c12", "scanner": "scanner-primary", "fingerprint": "b1a627854bb4fe09", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7ca0306ebe6ec10f", "level": "none", "message": {"text": "Commented-code block (5 lines) in assets/libs/jquery/src/core/support.js:8"}, "properties": {"repobilityId": "c817ee1b1745e5ad", "scanner": "scanner-primary", "fingerprint": "7ca0306ebe6ec10f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9a6bb4098584443e", "level": "none", "message": {"text": "Commented-code block (7 lines) in assets/libs/bootstrap/js/src/carousel.js:229"}, "properties": {"repobilityId": "7cb59db5de2fea46", "scanner": "scanner-primary", "fingerprint": "9a6bb4098584443e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}]}]}